Compare commits

...
2308 Commits
Author SHA1 Message Date
Ashesh Vashi 067f7af227 revert(pkg): back out all _fixup_imports path-handling attempts
pkg/mac/build-functions.sh reverted to bd841b882's state - keeps the
notarization diagnostic fix (print REQUEST_STATUS + fetch notarytool
log on failure), drops everything from 0296de48e through 6891b5e12.

Five iterations trying to fix _fixup_imports's otool handling of
"pgAdmin 4 Helper (GPU)" (newline-based path list, otool-classic
fallback via bare name, via resolved absolute path, absolute-path
retries for otool/install_name_tool) all failed to get the appbundle
build past this file. Confirmed along the way: the path itself is
byte-for-byte correct and the file verifiably exists at the moment
otool runs (od -c / ls -la evidence from a live buildfarm run); both
otool and otool-classic, called directly with correct quoting and a
resolved absolute path, still fail identically on it. That's a real
bug/limitation in Apple's tooling on this build node, not fixable by
further changes to how this script constructs or passes the path.

Reverting rather than continuing to guess. The stale nspkg.pth /
--system-site-packages fix in pkg/linux/build-functions.sh (verified
working, pgadmin4-rpm-build #180 succeeded) is untouched by this.
2026-07-30 12:30:49 +05:30
Ashesh Vashi 6891b5e12f fix(pkg): retry otool/install_name_tool with absolute path before giving up
pgadmin4-appbundle-build #116 (macos-arm64) failed even with
otool-classic invoked directly via its real resolved path
(669c2f244's fix) - identical error, byte-for-byte, to calling plain
`otool -L`:

  can't open file: .../pgAdmin 4 Helper  (No such file or directory)

That rules out PATH resolution and otool's internal re-exec dispatch
as the cause too. Both otool -L and otool-classic -L, invoked directly
with correct argv quoting and a verified-correct, verified-present
path, fail identically on this one binary. Whatever's actually broken
is inside these tools' own handling of "(" in a path they're given.

Untested variable so far: this script pushd's into the bundle dir and
passes relative paths ("./Contents/...") throughout. Try a plain
absolute path with each tool before falling back to the diagnostic
dump - cheap to test, and applies equally to the two
`install_name_tool -change` calls further down that edit this same
file in place, since they could hit the identical issue.

Still not proven - if this also fails, the diagnostic dump (retained
as final fallback) will at least confirm parens themselves are the
blocker regardless of path form, which would mean sidestepping via a
temporary parens-free symlink is the next thing to try.
2026-07-30 12:10:59 +05:30
Ashesh Vashi 669c2f2442 fix(pkg): resolve otool-classic's real path, bare name isn't on PATH
pgadmin4-appbundle-build #115 (macos-arm64) failed even with the
otool-classic fallback from 2d17e9e15:

  otool-classic output: .../build-functions.sh: line 260:
    otool-classic: command not found

otool-classic only exists inside the active Xcode toolchain
(/Applications/Xcode.app/.../XcodeDefault.xctoolchain/usr/bin/
otool-classic - the exact path visible in otool's own internal error
message), not as a bare command on $PATH. The previous fallback never
actually tested whether the real otool-classic binary can open the
file - it just failed on a missing command.

Resolve the real path via `xcrun -f otool-classic` (falling back to
deriving it from `xcode-select -p` if xcrun's lookup is unavailable)
and invoke that directly.

Not yet verified against a real buildfarm run.
2026-07-30 12:01:52 +05:30
Ashesh Vashi 2d17e9e15d fix(pkg): retry via otool-classic directly, now with hard evidence
pgadmin4-appbundle-build #114 (macos-arm64) failed on the same
"pgAdmin 4 Helper (GPU)" binary as before, but this time the
diagnostics from d4364555a actually ran and proved the path itself is
not the problem:

  Raw bytes of the path (od -c): plain ASCII throughout, single
  spaces, no non-breaking/unicode look-alikes, no trailing garbage.
  ls -la of the exact path: file exists, correct size/perms,
  timestamped seconds before otool ran - not a race condition either.

otool -L still failed via its internal otool-classic re-exec on that
exact, verified-correct, verified-present file. That's conclusively a
bug in otool's own internal dispatch, not anything this script builds
or passes to it - we can't fix Apple's tool, but we can avoid
triggering its broken code path.

Retry via `otool-classic -L "${TODO_OBJ}"` called directly (our own
argv-based quoting, not otool's internal re-exec, whatever that does
differently) when the initial `otool -L` fails. Every other binary in
the bundle keeps going through plain `otool -L` unchanged - this only
engages for the specific case that's already failing anyway. The
diagnostic dump (od -c / ls -la / otool-classic's own output) is kept
as the final fallback in case even the direct call fails too.

Not yet verified against a real buildfarm run.
2026-07-30 11:55:29 +05:30
Ashesh Vashi d4364555ae fix(pkg): diagnostics never ran - set -e ate the failure before $? check
pgadmin4-appbundle-build #113 (macos-arm64) failed again on the same
otool -L call, but none of the diagnostic output from 401afbfa3 showed
up. Instead:

  The command "OTOOL_OUTPUT=$(otool -L "${TODO_OBJ}" 2>&1)" failed in
  "_fixup_imports" with exit code 1.

That's this script's own ERR trap firing on the assignment statement
itself. Under set -e, `VAR=$(cmd)` still propagates cmd's non-zero
exit to the trap immediately - the previous diagnostic's separate
`OTOOL_STATUS=$?` line right after never got a chance to run, so
nothing was ever printed, same as the original bare failure.

Move the assignment into the condition of the `if` itself
(`if ! OTOOL_OUTPUT=$(...); then`) - bash explicitly exempts a
command being tested by if/while/until (or negated with !) from
errexit, so this time the diagnostic block will actually execute.

Still not verified - watching the next buildfarm run.
2026-07-30 11:28:36 +05:30
Ashesh Vashi 401afbfa31 fix(pkg): add diagnostics for otool -L failures instead of guessing
pgadmin4-appbundle-build #112 (macos-arm64) failed with otool-classic
unable to open a path that our own logging showed as correct
immediately beforehand ("pgAdmin 4 Helper (GPU)"). Rather than work
around it blindly (an otool-classic fallback was tried and reverted -
unverified, and risks masking a real problem instead of fixing it),
capture real evidence the next time this happens:

- raw byte dump (od -c) of ${TODO_OBJ} right before otool runs, and
  again on failure - catches non-ASCII or invisible whitespace that
  a plain `echo` can't show
- ls -la of the exact path and its containing directory on failure -
  confirms whether the file actually exists at that exact moment
  (rules out/in a race with something still writing it)
- otool's actual stdout/stderr and exit code, instead of letting its
  own error text be the only signal

No fallback behavior - fails loudly (exit 1) with this diagnostic
dump so we can tell what's actually happening from the next real
buildfarm run instead of speculating further.
2026-07-30 11:20:38 +05:30
Ashesh Vashi 0296de48ee fix(pkg): _fixup_imports truncates paths with spaces, breaking otool
pgadmin4-appbundle-build #110 (macos-x64) failed with:
  error: otool-classic: can't open file: ./Contents/Frameworks/pgAdmin
  error: otool-classic: can't open file: ./Contents/Frameworks/Electron

_fixup_imports built its worklist with `awk -F':| '`, a regex
alternation that splits on a literal ':' OR any bare space. `file`'s
actual output format is "path: description" (colon-space as one
token), so any space *inside* the path itself - "pgAdmin 4 Helper
(Plugin).app", "Electron Framework.framework", both routine in macOS
app bundles - also got treated as a split point, truncating $1 to
whatever preceded the first space.

The resulting list was then joined with a single space (ORS=" ") and
iterated via an unquoted `for x in $list`, which word-splits on
spaces again - doubly ambiguous between a path's own spaces and the
list's separator, unrecoverable however it's parsed.

Fix: split only on the literal ": " token file emits (`awk -F': '`,
not `-F ':| '`), and switch the whole worklist to newline-separated
instead of space-separated, iterated with `while IFS= read -r`
instead of `for x in $unquoted_list`, at both the outer (executable)
level and inner (library-copy) level (`TODO="${TODO}"$'\n'"..."`).

Not yet verified against a real buildfarm run - can't reproduce the
macOS codesigning environment locally. Watching the next
pgadmin4-appbundle-build run.
2026-07-30 09:48:03 +05:30
Ashesh Vashi 689c969f95 fix(pkg): stop using --system-site-packages, use a scoped .pth instead
The previous fix (bd841b882) tried to delete the specific broken
sphinxcontrib-jsmath nspkg.pth file from the system site-packages
before creating the venv. It didn't work: pgadmin4-rpm-build #177
failed identically on el-10. The delete silently no-opped - that
directory is root-owned on the build node and the build user doesn't
have write access there, so `find -delete` failed while `-print` (which
runs first) still logged the match, making the fix look like it ran.

Root cause is the --system-site-packages flag itself: it uses Python's
site.addsitedir() internally, which does not just add a directory to
sys.path - it also scans that directory for every *.pth file and
executes any "import ..." lines found in them. That's what runs the
broken nspkg.pth's stale namespace-package bootstrap code and corrupts
sys.path before core stdlib resolves, breaking pip's own subprocess.

We only need --system-site-packages for OS-provided packages that
don't have reliable pip wheels (e.g. dbus-python, a hard runtime
dependency per pkg/debian/build.sh's python3-dbus dep, needs
libdbus-1-dev to build from source). A *plain path line* (no "import")
in a .pth file only appends that directory to sys.path - it does not
trigger a further .pth scan of it. So: create the venv without
--system-site-packages, then write the system site-packages
directories as plain lines into a .pth file inside the venv's own
site-packages (which the build user does own). Same OS-package
availability, without ever asking Python to treat the system directory
as a site directory - the broken nspkg.pth is simply never read.

Not yet verified against a real buildfarm run - can't reproduce the
el-10 environment locally. Watching the next pgadmin4-rpm-build run.
2026-07-30 09:36:44 +05:30
Ashesh Vashi bd841b8827 fix(pkg): surface real notarization failures, guard against stale nspkg.pth in venv
macOS build (build-functions.sh): _notarize_pkg only printed
"Notarization failed." on rejection, giving no indication why. Print
the actual REQUEST_STATUS and fetch the full notary log via
`notarytool log` so future failures are actually diagnosable from the
Jenkins console instead of just "status: Invalid".

Linux build (build-functions.sh): _create_python_virtualenv creates
venvs with --system-site-packages, which pulls in the entire system
site-packages dir - including any stale, improperly-uninstalled
package's namespace-package .pth hook. That legacy pip/setuptools
mechanism runs at interpreter startup, before core stdlib is
guaranteed to resolve; a leftover sphinxcontrib-jsmath nspkg.pth on
the el-10 build node corrupted sys.path early enough to break pip's
own subprocess bootstrap, failing the whole build with a misleading
"No module named 'importlib'"/"'traceback'" error
(pgadmin4-rpm-build #176). Remove that exact known-broken file before
creating the venv - not every *-nspkg.pth, since this touches the
*system* Python install on a build node shared by other jobs, and any
other such file could still be load-bearing for something unrelated.
--system-site-packages itself is left untouched - it's required so
venvs can see OS-provided packages not available as clean pip wheels
on every target platform.
2026-07-30 09:21:22 +05:30
Ashesh Vashi 3f99454199 fix: unbound keyring probe at config-import time can hang desktop startup
evaluate_and_patch_config() called keyring.get_password() synchronously
at `import config` time to detect a selected-but-unusable OS keyring
backend. On Debian 13 (and similar headless/RDP sessions with no live
D-Bus/GNOME-Keyring session), that call - and even the keyring import
itself - can block forever, freezing the whole desktop app before it
ever starts.

Revert evaluate_config.py to the pre-9.17 synchronous check (backend
name only, no get_password call). Move the usability probe into
pgadmin.utils.keyring_probe, run from create_app() in a background
daemon thread so it never delays startup, isolated in its own process
via subprocess.Popen(sys.executable, '-c', ...) so a hang can actually
be killed - a thread-only timeout can't do this, it would leave
CPython's per-module import lock held forever and wedge any later
`import keyring` in the parent process too.

subprocess.Popen (plain fork+exec), not multiprocessing.Process, is
required here: create_app() runs at the top level of pgAdmin4.py while
it's still being imported, and multiprocessing's spawn start method
refuses to start a child before the current process finishes
bootstrapping its __main__ module. An earlier version of this fix used
multiprocessing and crashed the probe thread with RuntimeError on every
single test run, which corrupted the SQLAlchemy/sqlite session for the
rest of app init and surfaced as an unrelated-looking "attempt to write
a readonly database" error on module_preference inserts.

config.USE_OS_SECRET_STORAGE is only ever read from request handlers
requiring an authenticated session, never at import time or inside
create_app() itself, so the async resolution race is safe in practice.

Tests mock subprocess.Popen for the timeout/kill/config-fallback
orchestration (deterministic, no real 3s wait or backend dependency),
plus one test class that runs the real probe script in a real
subprocess against a fake keyring module injected via PYTHONPATH, so
the script body itself has real coverage.

Verified with the full regression suite (--exclude feature_tests) in
both desktop mode (2134 passed, 0 failed) and server mode (2251
passed, 0 failed); remaining skips are pre-existing pgAgent-dependent
job tests.
2026-07-30 00:00:33 +05:30
Ashesh Vashi 6e029ab6e5 docs: correct reporter credit for #10193/#10194 to full name
Hung Tran Quoc (GitHub handle @rampage0010) — release notes only
listed the given name.
2026-07-28 12:40:25 +05:30
Ashesh Vashi ee7109d400 Updated version for release v9.17 2026-07-28 12:08:09 +05:30
Ashesh Vashi 78f7a5f6ab test: restore app.PGADMIN_EXTERNAL_AUTH_SOURCE in auth-mocking tearDown
Each of the Kerberos/LDAP/OAuth2/webserver login-mocking test classes
sets self.app.PGADMIN_EXTERNAL_AUTH_SOURCE (the Flask app instance
attribute before_request() actually reads) in setUp, but tearDownClass
only restored app_config.PGADMIN_EXTERNAL_AUTH_SOURCE -- a different
object (the config module). Whichever of these classes ran last
(test_webserver_with_mocking, alphabetically) left the live app
attribute stuck at WEBSERVER for the rest of the suite, making
before_request() route every subsequent unauthenticated /login request
through authenticate.login()'s webserver auto-auth path instead of
rendering the login form -- surfacing as an unrelated CSRF-harvest
failure in test_close_requires_auth much later in the run.

Full server-mode regression: 2507 tests, 0 failures/errors (was 2).
2026-07-28 11:07:37 +05:30
Ashesh Vashi 689d200e9f test: fix server-mode test-harness bugs found running the full suite
get_test_user() created secondary test clients via app.test_client()
but never called setApp() on them, so any test using a second user
crashed with 'NoneType has no attribute config' the first time it
needed to fetch a CSRF token (44 errors in a full server-mode run).

TestSqlEditorCloseRequiresAuth.setUp() logs out the shared
class-level tester before asserting a CSRF token was harvested; when
that assertion failed, unittest skipped tearDown() entirely (by
design, tearDown only runs if setUp succeeds), leaving the tester
logged out for the rest of the suite and cascading into 188 unrelated
failures. Switched to addCleanup(), which always runs.

Full server-mode regression: 2507 tests, was 232 failures/errors,
now 2 (both isolated to this same test's own CSRF-harvest timing in
full-suite order, unrelated to these two fixes).
2026-07-28 10:12:18 +05:30
Ashesh Vashi 339b4f9cd3 Merge branch 'cve-9.17-rebase' into master 2026-07-28 09:12:21 +05:30
Domenico Sgarbossa 5fc319551d Updated message catalogs for v9.17 (#10212) 2026-07-28 09:00:14 +05:30
Ashesh Vashi 9ef9a7136f docs: add 9.17 release notes for CVE-2026-17346 through 17351, 17566
Adds bug-fix bullets for issues #10190-10194, #10200 (previously
assigned CVE-2026-17346..17351) and #10213 (CVE-2026-17566, the
import/export \copy backslash-escape RCE reported by Arpit Jain).
2026-07-28 08:56:41 +05:30
Ashesh Vashi 1496fabe28 fix(security): reject ambiguous backslash-escape in import/export query guard
_is_query_parens_balanced() always treated \' inside a single-quoted
string as an escaped quote, matching psql only when
standard_conforming_strings=off. Under the actual default (scs=on,
every supported PostgreSQL version), psql treats \ as a literal
character, so 'a\' closes the string right there. A crafted query
export payload like SELECT 'a\') TO PROGRAM 'cmd' x' passed the
balance check while the real ) it hid closed the wrapping \copy (...)
context in psql, exposing a live TO PROGRAM clause for RCE.

Since the correct interpretation depends on a server setting we
can't reliably know, reject any backslash inside a single-quoted
string outright instead of guessing.

Reported by Arpit Jain (arpitjain099).
2026-07-27 19:04:29 +05:30
Kundan ef76102bcd fix(llm): close lexer-differential bypass in AI Assistant read-only guard
sqlparse's string-literal lexing can disagree with PostgreSQL's: under
standard_conforming_strings = on (the default), a backslash before a
quote is an ordinary character to PostgreSQL but sqlparse treats it as
escaping the quote, so a payload like
SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'
passes _validate_readonly_query as a single SELECT while PostgreSQL
executes it as four statements -- the smuggled COMMIT ends the wrapping
BEGIN TRANSACTION READ ONLY and the trailing ROLLBACK is a no-op,
reintroducing the write/RCE bypass the bf47924444 fix was meant to
close (reported by Kai Aizen / SnailSploit).

Run the LLM-supplied query with prepare=True, forcing psycopg3's
extended query protocol. PostgreSQL's own Parse step -- not a
client-side approximation of it -- rejects any text containing more
than one statement, independent of how it's lexed. Threaded through
execute_2darray as an opt-in parameter (default None) so no other
caller's behavior changes. Also set SESSION CHARACTERISTICS AS
TRANSACTION READ ONLY as defense-in-depth against a smuggled COMMIT.

prepare=True alone is not sufficient: psycopg3's PrepareManager.get()
returns Prepare.NO -- checked before it even inspects the prepare
argument -- whenever the connection's prepare_threshold is None, which
is pgAdmin's per-server default ("Prepare threshold" is blank unless an
administrator sets it). On a default-configured server the extended
protocol never actually engaged, so the bypass stayed live. Force
prepare_threshold=0 on the LLM's single-use connection in
_connect_readonly() so the extended protocol -- and PostgreSQL's
single-statement Parse-step guarantee -- is unconditional on this
connection, without touching the server-wide setting or any other
session/caller.

Adds regression coverage at three levels: unit tests pinning that
prepare=True is always passed and that prepare_threshold=0 is forced
on the connection; and an end-to-end test driving the real
/sqleditor/nlq/chat/<trans_id>/stream route (LLM client mocked, real
tool-dispatch path) with the exact smuggled-COMMIT payload, confirming
the guarantee holds from the HTTP entry point down to the driver call.
2026-07-27 16:51:46 +05:30
Ashesh Vashi 2b4307f321 feat: add system-wide default for Geometry Viewer custom tile provider (#10198)
Follow-up to #10142. Geometry Viewer's custom tile provider was only
configurable per-user (Preferences), with no way for an administrator
to set an organization-wide default (e.g. an internal tile server)
that applies out of the box for every user.

config.DEFAULT_GEOMETRY_VIEWER_PROVIDER is a plain dict; the five
custom_tile_* preference defaults (url, name, crs, attribution,
max_zoom) are sourced from it instead of hardcoded literals.
Preference.get() only reads a per-user DB row if the user has
explicitly saved one, otherwise it falls back to this default --
override semantics, one active provider, no naming-conflict surface.

config_local.py/config_distro.py/PGADMIN_CONFIG_* replace this config
variable wholesale, not merged key-by-key, so a naive
DEFAULT_GEOMETRY_VIEWER_PROVIDER['name'] lookup would KeyError-crash
preference registration (and app startup) on any partial admin
override, or AttributeError on a wrong-typed value.
resolve_geometry_viewer_provider_defaults() guards against this:
falls back per-field on missing/wrong-type values, validates crs
against the 3 supported choices, validates max_zoom is a non-bool int
in [0, 25], degrading to the original hardcoded defaults instead of
crashing.

No new attacker-reachable surface: DEFAULT_GEOMETRY_VIEWER_PROVIDER is
filesystem/deployment-level admin config, same trust boundary as
DEFAULT_BINARY_PATHS/OAUTH2_CONFIG. Existing DOMPurify sanitization on
name/attribution and the http(s):// + {x}/{y}/{z} URL validation in
GeometryViewerUtils.js (from #10142) apply uniformly to config-sourced
and per-user values alike.

Adds test_geometry_viewer_provider_defaults.py (9 scenarios: fully
valid, partial override, non-dict, invalid CRS, out-of-range/non-int/
bool max_zoom, non-string fields, empty dict).
2026-07-27 16:07:17 +05:30
Kundan Sable 362c202b25 fix: close remaining front-door-only tool-RBAC gaps (tools_ai, import_export_servers, search_objects, change_password)
Extends the tool-RBAC fix (permission enforced only on a blueprint's
"front door" route, with the rest relying on @pga_login_required alone)
to four permission types the original fix didn't cover:

* tools_ai ("AI Reports"): none of the 14 Security/Performance/Design
  report routes in the llm blueprint checked this permission at all --
  only the frontend menu was hidden behind AllPermissionTypes.TOOLS_AI
  (llm/static/js/ai_tools.js). A user an admin had denied AI access to
  could call the report/report-stream routes directly and have real
  server/database/schema content sent to whichever external LLM
  provider is configured, bypassing both the access control and the
  data-exposure/cost boundary the permission exists to enforce.
* tools_import_export_servers: only 'save' was gated; 'get_servers' and
  'load_servers' relied on @pga_login_required alone. Lower impact than
  the above: get_servers only returns the calling user's own servers,
  and load_servers only previews an already-uploaded file without
  persisting (the actual write stays gated at 'save').
* tools_search_objects: only 'search' was gated; 'types' (a static list
  of supported object-type names for the dropdown, no DB content) was
  not.
* change_password: the self-service password-change route
  (browser.change_password) never checked this permission, so revoking
  "Change Password" from a role in Role management had no effect --
  users under that role could still change their own password. Lower
  severity than the others since the route is inherently self-scoped
  (can only ever affect the caller's own password).

Extends tools/tests/test_tool_permissions_required.py with 17 new
scenarios for the first three, and adds a dedicated
browser/tests/test_change_password_permission_required.py for the last
(different blueprint, different permission category).

Verified against a live PostgreSQL server in SERVER mode: all 40
scenarios (37 + 3) pass with the fix applied. Negative control:
reverting the four fixes reproduces exactly the reported gaps -- 17 of
the 20 pre-existing scenarios still pass unaffected, the 17 new ones
fail, and change_password returns 200 instead of 403 -- confirming the
tests actually catch the regression rather than passing vacuously.
2026-07-27 05:28:57 +00:00
Ashesh Vashi 84b93c268d chore(deps): consolidated dependency bumps (setuptools, fast-uri, tar, shell-quote, svgo) (#10199)
Supersedes 7 open Dependabot PRs by applying the safe ones and
properly fixing the one with a broken lockfile, in one CI cycle:

- setuptools ==82.* -> ==83.* (#10144, #10145 - duplicate PRs, same
  patch). Only touches the `python_version > '3.9'` line; the
  `<82; python_version <= '3.9'` gate for Python 3.9 is untouched,
  so this doesn't affect Python 3.9 support.
- fast-uri 3.1.2 -> 3.1.4 in both /web and /runtime (#10183, #10195)
  - fixes two real CVEs (GHSA-v2hh-gcrm-f6hx, GHSA-4c8g-83qw-93j6).
- tar 7.5.16 -> 7.5.21 (#10182) - patch series, decompression-bomb
  and unbounded-recursion hardening only.
- shell-quote 1.8.4 -> 1.10.0 (#10185) - additive opt-in option +
  parser fixes, no breaking changes.
- svgo 3.3.3 -> 4.0.2 (#10184) - Dependabot's own PR left yarn.lock
  internally inconsistent (dropped the workspace-level `svgo` entry
  while merging version-range blocks), so `yarn install --immutable`
  failed in CI with "the lockfile would have been modified by this
  install". Regenerated properly via `yarn up`/`yarn dedupe` here.
  The direct `svgo`/`svgo-loader` deps are not actually wired into
  any webpack rule (verified via grep) - the real SVG pipeline is
  `@svgr/webpack` -> `@svgr/plugin-svgo` -> svgo 3.3.3, which this
  bump does not touch - so the major version jump has no build
  impact. `yarn.lock` now correctly keeps that separate 3.3.3
  resolution alongside the deduped 4.0.2 one.

Not included (structurally blocked, tracked separately):
- paramiko 3.5.1 -> 5.0.0 (#9927): paramiko 5 removes DSSKey
  entirely; sshtunnel 0.4.0 (dormant since 2021) still references
  paramiko.DSSKey, so `import sshtunnel` would crash immediately.
- pywinpty 2.0.* -> 3.0.* (#10082, #10084): the existing pin cites
  https://github.com/andfoy/pywinpty/issues/545, confirmed still
  open ("process read and write not working as expected in 3.x").

Verified: `yarn install --immutable` clean in both /web and
/runtime, `yarn run linter` clean, full `yarn run bundle:dev`
compiles successfully.
2026-07-25 01:46:48 +05:30
Ashesh Vashi 1e7407bbf6 Merge remote-tracking branch 'origin/master' into cve-9.17-rebase 2026-07-25 01:04:16 +05:30
Ashesh Vashi 9bcc0ff8de docs: fix RST emphasis error in v9.17 release notes
Trailing "SELECT *" broke sphinx's inline emphasis parser (bare *
without matching close), failing the macOS appbundle docs build.
2026-07-25 01:02:36 +05:30
Kundan Sable f75452bfd0 test(security): behavioral regression test for name-literal SQL escaping
Add test_name_literal_sql_escaping.py covering the templates fixed in the
CVE-2026-12044 follow-up: index Statistics (coll_stats.sql, both
dialects), publications (pg + ppas), and subscriptions dependency/
get-position lookups.

Each scenario renders the real template with a stacked-statement
apostrophe payload and asserts (1) the object name appears exactly as
qtLiteral escapes it and (2) the rendered SQL parses as exactly one
statement -- the property that actually prevents statement smuggling.
Verified the semantic assertion fails on the pre-patch raw-interpolation
form (parses as 2 statements) and passes on the fixed form, so the test
genuinely guards the fix rather than trivially passing.

Complements test_stats_template_regclass_cast.py (single-index
pgstatindex path) and the lint guard in test_sql_string_literal_lint.py.
Pure template-render test, no DB required.

Also independently verified during review: the fix's escaping neutralises
a live stacked-statement injection on PostgreSQL 16 (pre-patch slept 5s,
post-patch 0.0s) for both index-stats and pub/sub paths, and confirmed
the browser tree label and Statistics grid render object names as
React-escaped JSX text, so the HTML/XSS probe in an object name does not
execute in those paths. EPAS/ppas runtime path not exercised (ppas
publication templates are byte-identical to the pg variants and are
covered at render level by this test).
2026-07-25 00:55:46 +05:30
Kundan Sable 73b3218992 fix(security): escape index-stats/publication/subscription name sinks (CVE-2026-12044 follow-up)
The 9.16 fix for CVE-2026-12044 hardened qtLiteral and switched sixteen
COMMENT ON / pgstattuple / pgstatindex templates to it, but the fix
missed several sinks that were previously excused in
test_sql_string_literal_lint.py's ALLOWLIST on the (incorrect)
assumption that schema/table/publication/subscription names sourced
from pg_catalog via the browser tree could never contain apostrophes.
They can, since PostgreSQL permits arbitrary characters in quoted
identifiers, so a low-privileged user able to CREATE TABLE, CREATE
PUBLICATION, or CREATE SUBSCRIPTION can plant a name that breaks out of
the unescaped '{{ name }}' interpolation once any user views that
object's Statistics or Dependencies tab.

Switch the following templates to qtLiteral(conn):
- schemas/tables/templates/indexes/sql/{16_plus,default}/coll_stats.sql
  (Index Statistics -- reported as "SQL injection in pgAdmin index
  Statistics (incomplete fix for CVE-2026-12044)")
- publications/templates/publications/{pg,ppas}/default/sql/
  {dependencies,get_position}.sql
- subscriptions/templates/subscriptions/sql/default/
  {dependencies,get_position}.sql

publications/__init__.py and subscriptions/__init__.py now pass
conn=self.conn into the dependencies.sql render_template call so the
qtLiteral filter has a connection to quote against. Remove the
corresponding ALLOWLIST entries in test_sql_string_literal_lint.py now
that these sinks are properly escaped instead of merely assumed safe.

Patch supplied pre-written; manual testing by the reporter reported
both the SQL-injection and HTML-injection probes as positive, but the
exact pre/post-fix state tested was not fully disambiguated in this
session -- treat as reported-but-not-independently-verified pending
follow-up confirmation.
2026-07-25 00:55:46 +05:30
Dave Page 24fdcf0f58 fix(security): add missing auth decorators to Constraints/preferences/debugger/schema_diff routes (CVE-2026-12046 follow-up)
In SERVER mode pgAdmin enforces authentication per route via
@pga_login_required; the before_request hook only handles desktop
auto-login and the Kerberos/Webserver redirect, so a route shipped
without the decorator is reachable unauthenticated (CWE-306). This is
the same defect class as CVE-2026-12046 (the sqleditor close/
update_connection routes).

A sweep found further omissions, now fixed with @pga_login_required:

* Constraints blueprint: nodes, proplist (obj), delete -- the routes
  named in the "SQL injection in pgAdmin index Statistics" follow-up
  report as an incomplete fix for CVE-2026-12046. delete is a
  state-mutating DELETE (removes table constraints); nodes/proplist
  return object information. Adds the missing pga_login_required import
  to this module.
* preferences.get_all_cli (GET)
* debugger.close (DELETE)
* schema_diff.close (DELETE)
2026-07-25 00:55:46 +05:30
Ashesh Vashi e7a8576731 Fix MASTER_PASSWORD_HOOK tokenisation on Windows
posix=False in shlex.split() never strips quote characters, so any
Windows hook path quoted to handle spaces (or any quoted argument)
came out with literal quotes still attached, and unquoted spaced
paths were split into multiple argv elements either way.

Use a shlex.shlex instance with posix=True (correct quote-stripping)
and escape='' (so backslashes in Windows paths are not treated as
escape characters). Document the quoting requirement in config.py
and add regression tests for quoted/unquoted spaced paths.
2026-07-25 00:55:46 +05:30
Dave Page ea7e798aac Fix OS command injection in the MASTER_PASSWORD_HOOK feature
The MASTER_PASSWORD_HOOK setting lets administrators specify an external
command that returns a per-user encryption key, with %u in the configured
string replaced by the current user's name. The previous implementation
substituted the username into the command string and executed the result
with subprocess.Popen(..., shell=True). Because the username can originate
from an external authentication source (OAuth/OIDC claims, Kerberos,
webserver auth), a username containing shell metacharacters allowed an
authenticated user to execute arbitrary commands as the pgAdmin service
account in deployments where the hook uses %u.

Tokenise the trusted hook string into an argument vector first, substitute
the untrusted username into the individual arguments, and execute with
shell=False. The username is therefore always confined to a single argv
element and any shell metacharacters it contains are inert.

Note for administrators: hooks that previously relied on shell features
(pipes, redirection, environment-variable expansion, globbing) in the
MASTER_PASSWORD_HOOK string itself will no longer have those interpreted;
such logic should be moved into the hook script. The documented form,
'<PATH>/script.sh %u', is unaffected.

Adds regression tests covering usernames containing ';', '$()', backticks,
pipes, '&&' and newlines, plus an end-to-end marker-file proof that no
shell execution occurs.

Reported-by: B1gN0Se
2026-07-25 00:55:46 +05:30
Ashesh Vashi 64a9cdbd6a fix: close remaining tool-RBAC gaps found in review
Extends the tool-permission enforcement pattern from the reported CVE
fix to the backup/restore/maintenance/import_export blueprints, which
had the identical front-door-only gap: only create_*_job was gated,
while objects()/check_utility_exists()/get_import_export_settings()
relied on @pga_login_required alone.

Also clears password/save_password/tunnel_password on adhoc server
clones, not just ownership fields - Server.clone() copies every
column, so a non-owner cloning another user's shared server was still
persisting that user's stored credentials into a row the non-owner
now owns.

Adds missing socket test scenarios (erd tables, psql socket_input/
socket_set_role/resize) that the existing test docstring claimed to
cover but didn't.
2026-07-25 00:55:46 +05:30
Dave Page ba1984718a Add RBAC regression tests for tool routes, sockets and adhoc ownership
Add regression coverage for the authorisation fixes:

  * test_tool_permissions_required: a consolidated, per-blueprint check
    that logs in as a user with no roles (hence no tool permissions) and
    asserts every gated backend HTTP route across the query tool, grant
    wizard, schema diff, ERD, PSQL and debugger returns 403. This catches
    any future route added to these blueprints without the decorator.
  * test_tool_socket_permissions_required: asserts the schema diff
    compare_database/compare_schema and psql start_process Socket.IO
    handlers refuse a user lacking the tool permission.
  * test_adhoc_connect_server_ownership: asserts that an adhoc connect
    triggered by a non-owner against an administrator-owned shared server
    persists a server row owned by the caller and not shared.

All three are skipped in DESKTOP mode, where every request is
auto-authenticated as the all-permissions DESKTOP_USER.
2026-07-25 00:55:45 +05:30
Dave Page a7e74a6ed6 Re-home adhoc cloned servers to the calling user
When /misc/workspace/adhoc_connect_server is given a sid, it clones the
existing server. Server.clone() copies every column of the source row,
including user_id, shared and shared_username. When a non-owner triggered
an adhoc connect against an administrator-owned shared server, the clone
inherited the administrator's ownership and shared flag, so pgAdmin
persisted a new, administrator-owned, shared adhoc server row created at
the behest of another user; the row is committed before the connection is
attempted, so it survived even when the connection failed.

Force the cloned adhoc record to belong to the current user and to be
private (user_id, shared, shared_username) before committing, mirroring
the new-server branch, so a non-owner can no longer persist a
cross-tenant server record.
2026-07-25 00:55:45 +05:30
Dave Page d36bd8dc96 Enforce tool RBAC on every backend route, not just the entry point
The tool permissions (tools_query_tool, tools_grant_wizard,
tools_schema_diff, tools_erd_tool, tools_psql_tool, tools_debugger) were
enforced only on a single "front door" route per tool, whilst the rest of
each tool's backend workflow relied on pga_login_required alone. An
authenticated user who had been denied a tool could therefore still drive
the tool through its other routes and Socket.IO handlers:

  * Query Tool: View/Edit Data via sqleditor.initialize_viewdata and the
    rest of the view-data chain, bypassing the gate on initialize_sqleditor.
  * Grant Wizard: object discovery (objects), SQL preview (modified_sql)
    and the actual privilege change (apply) were ungated; only acl_list
    was protected. This allowed real GRANTs to be generated and applied.
  * Schema Diff: initialize, servers, get_server, connect_server,
    connect_database, databases, schemas, ddl_compare and the
    compare_database/compare_schema socket handlers were ungated; only
    panel was protected.
  * ERD: initialize, prequisite, sql (table DDL generation) and the
    tables socket handler were ungated; only panel was protected.
  * PSQL: the panel route and the entire /pty Socket.IO namespace
    (start_process, socket_input, socket_set_role, resize) had no tool
    permission check at all, so a denied user could still obtain an
    interactive psql session.
  * Debugger: the directly addressable get_arguments/set_arguments/
    clear_arguments routes were ungated.

Apply permissions_required to the HTTP routes and socket_permissions_required
to the Socket.IO handlers so the tool permission is enforced consistently
across each tool's surface. The permission check is the outermost
decorator, so it runs before any connection or transaction lookup.
2026-07-25 00:55:45 +05:30
Dave Page 461c3afba9 Add socket_permissions_required decorator for Socket.IO RBAC
Flask-Security's permissions_required only guards HTTP routes; pgAdmin's
Socket.IO event handlers had no permission-aware equivalent and relied on
socket_login_required, which checks authentication but not the tool
permission. Add socket_permissions_required as the socket counterpart of
permissions_required so that event handlers can enforce the same
tool-level RBAC as the routes.

It reads the user's permissions via has_permission() rather than
flask_principal's Permission().can(), so it does not depend on the
principal identity having been loaded onto the socket request context,
and it honours pgAdmin's Administrator bypass. On failure it disconnects
and raises ConnectionRefusedError, mirroring socket_login_required.
2026-07-25 00:55:45 +05:30
Ashesh Vashi 54ff7b4dce Updated message catalogs for v9.17 2026-07-25 00:54:55 +05:30
Ashesh Vashi 5d39a52a73 docs: add release notes for v9.17 2026-07-25 00:21:27 +05:30
Niv Greenstein 108797d48a feat: add custom tile provider settings for Geometry Viewer (#10142)
Geometry Viewer's base-layer choices were hardcoded (Empty, Street,
Topography, Gray Style, Light Color/Dark Matter), with no way to
point at a private/internal tile server or a provider not in that
built-in list.

Add a geometry_viewer preferences category (custom_tile_url, _name,
_crs, _attribution, _max_zoom) under sqleditor. When a valid custom
tile provider URL is configured (must be http(s) and contain {x},
{y}, {z}), it's used as the default base layer; built-in tiled
layers are hidden unless the custom provider's CRS is also
EPSG:3857 (Web Mercator), since they can't be reprojected together.
Non-mercator custom providers (e.g. EPSG:4326) only apply to SRID
4326 geometry data; other SRIDs still render on the existing blank
Cartesian plane.

Custom name/attribution are DOMPurify-sanitized before being passed
to Leaflet (both are innerHTML sinks). URL is not sanitized but is
gated by the http(s):// prefix check, so javascript:/data: URLs are
rejected; it's consumed as a tile-image src template, not an HTML
sink.

Adds GeometryViewerUtils.spec.js covering URL validation, defaults,
sanitization, CRS resolution/fallback, and base-layer composition.
2026-07-24 22:17:51 +05:30
Ashesh Vashi 7339eb8dcc fix: report the correct error message on trigger node.sql failure (#10197)
The failure path for the second query (node.sql, resolving the
trigger function's node data) reported errormsg=rset — the result
dict from the first, already-successful get_function_oid.sql query
— instead of res, the actual error from the failed query. Any
failure here (permissions, catalog access) surfaced a stale,
misleading payload instead of the real cause.
2026-07-24 21:59:06 +05:30
Ashesh Vashi 34108aa50f fix: remove unused sqlalchemy exists import in server_access.py (#10196)
'exists' was imported but never called; the .exists() at line 165 is
the query-builder method on a Query instance, not this function.
2026-07-24 21:58:00 +05:30
lkmatsumura 1e1240038a refactor(server_groups): centralize shared-group visibility and access logic (#10077)
Replace the per-server ServerGroupModule.has_shared_server() loop and
scattered ad hoc shared-server checks with two centralized helpers,
get_server_groups_for_user() and get_server_groups_for_user_query(),
in server_access.py — a single SQL EXISTS query instead of iterating
servers per group. get_server_group() reuses the same shared-access
logic, and returned groups now carry is_shared_group metadata so the
browser tree can render the correct icon and derive edit/delete
permissions consistently.

update() now resolves the target group via get_server_group(gid,
hide_shared=True), so a non-owner can no longer rename another
user's shared group; delete() already blocked deleting shared or
first-user groups and now reports clearer errors for both cases.
Desktop mode's non-SERVER_MODE query path uses
literal(0).label('is_shared_group') (a bare int has no .label()).

Adds test_sg_permissions.py covering owned/shared/desktop group
visibility and access.
2026-07-24 19:11:27 +05:30
Hari Prasad 966a8ae99a docs: add basic starter contributing guide (#10093)
* docs: add basic starter contributing guide

Add a CONTRIBUTING.md file to document the contribution workflow for pgAdmin 4.

Includes:
- Getting started instructions
- Issue reporting guidelines
- Development workflow and coding practices
- Pull request requirements
- Development environment setup
- Database migration guidance
- Security reporting process
- Community support resources

This provides a single reference for new and existing contributors.

* add language tag on the opening fence of the Windows command block

* Add architecture overview, define $PGADMIN4_SRC, and link GitHub URLs

* docs: update contribution guidance

Clarify contributor workflow, fix the runtime link, and add references to existing contributor docs.
2026-07-24 19:05:11 +05:30
Dave Page 75dd304d25 fix(cloud): stop googleapiclient pulling in the system oauth2client (#10110) (#10112)
On packaged Linux installs the bundled venv is created with
--system-site-packages (issue #7173) so it can reach system packages such
as dbus-python. That also exposes the deprecated system oauth2client and
whatever pyOpenSSL ships alongside it. googleapiclient imports oauth2client
optionally, and on Ubuntu 24.04 that drags in a pyOpenSSL too old for our
bundled cryptography, aborting startup at blueprint registration with
"AttributeError: module 'lib' has no attribute 'GEN_EMAIL'".

pgAdmin only ever authenticates to Google via google-auth and
google-auth-oauthlib, so park a None sentinel under
sys.modules['oauth2client'] before importing googleapiclient in both the
web module and the standalone pgacloud provider. The optional import then
fails cleanly and googleapiclient falls back to google-auth.

Closes #10110
2026-07-24 19:02:29 +05:30
n0099 67755809a6 zh_Hans_CN translate: truncate 截断 -> 清空 (#10138)
this also sync with phpmyadmin: https://github.com/phpmyadmin/phpmyadmin/blob/c605fd63bc2e48b682e06d6d1041de544ddf861c/resources/po/zh_CN.po#L12154
2026-07-24 19:01:55 +05:30
Kobi Hikri e65edd4669 Pin sonarqube-scan-action to a full commit SHA (v8.2.1) (#10154) 2026-07-24 19:01:03 +05:30
Kundan 9bf83b4489 fix: return Response as-is and pass conn when expanding a trigger's function (#10177)
Expanding a Trigger node under a Table to view its function threw
'Response' object is not iterable, crashing the tree.

get_children_nodes() can legitimately return a Flask Response instead
of a list (e.g. gone("Could not find the specified trigger
function") when the trigger's function has no matching row in the
trigger-function node query, as happens for a genuine internal-
language function such as suppress_redundant_updates_trigger).
NodeView.children() / PGChildNodeView.children() unconditionally
sorted whatever get_children_nodes() returned, crashing on a
Response instead of passing it through.

Separately, TriggerView.get_children_nodes() rendered the trigger-
function node.sql template (which quotes fnid via qtLiteral(conn))
without passing conn into the template context. This call site
predates qtLiteral requiring a connection; after qtLiteral was
hardened in 658bb585d to raise ValueError instead of silently
degrading when conn is missing, this broke node.sql rendering for
every trigger, not just the internal-language case.

Fix both: check isinstance(children, flask.Response) in children()
before sorting/iterating and return it as-is, and pass
conn=self.conn into the node.sql render call, matching every other
render_template call site in the file.

Fixes #10117
2026-07-24 19:00:31 +05:30
Regina Obe 58e5fc7aed Fix for #10187 (#10188)
Extension UI gives error with PG 19
column reference "comment" is ambiguous LINE 5: e.comment

Issue caused because in pg19 :

SELECT * FROM pg_catalog.pg_available_extensions();

now outputs an additional column `location`
after default_version and comment is now 4th column
2026-07-24 18:38:40 +05:30
Ashesh Vashi 577a518fcb fix: scan all Mach-O binaries for bundle linkage, not just .so/.dylib (#10189)
_verify_bundle_linkage's host-library scan only matched files by
.so/.dylib name suffix, so a shipped executable (Contents/MacOS/*)
or a Python.framework payload with a host-linked dependency but no
matching suffix could slip through unchecked — the same class of
bug #10135 was added to catch.

Detect Mach-O executables/libraries by content via `file` instead
(same pattern the codesign step in this file already uses),
regardless of extension or executable permission bits, so readable
non-executable dylibs are covered too.
2026-07-24 18:34:03 +05:30
Dave Page 1884356245 fix: fail the macOS build if any bundled library links outside the bundle (#10135)
9.16 failed to start on Intel Macs (#10123): cryptography had no
prebuilt Intel macOS wheel, pip compiled it from source, and its
openssl-sys build linked the builder's Homebrew OpenSSL into
_rust.abi3.so instead of the bundled one. _fixup_imports deliberately
skips _rust.abi3.so, so the dangling reference shipped unnoticed and
the app died on startup for anyone without that external dylib.

Add _verify_bundle_linkage, run after the bundle is assembled and
relocated but before code-signing: walks every .so/.dylib and fails
the build if any install-name points at a build-host prefix
(/usr/local, /opt/homebrew, /opt/local, $SLAVE_HOME). OS libraries
and @loader_path/@rpath/@executable_path references pass untouched.
Turns this class of bug into a build-time failure instead of a
runtime one.
2026-07-24 18:22:08 +05:30
Kundan b85fb6c650 fix: use pg_depend ownership instead of name guessing for SERIAL detection (#10167)
Column-owns-sequence was detected by guessing the sequence name as
<table>_<col>_seq and string-matching it in nextval(...). Renaming
a table/column broke the guess (false negative, #10100); an
unrelated sequence with the same guessed name broke it the other
way (false positive, #10101).

Check col.get('seqrelid') (real pg_depend ownership) instead, and
exclude identity columns. SERIAL is now emitted iff a genuine
ownership dependency exists, independent of naming.

Fixes #10100, #10101
2026-07-24 18:15:20 +05:30
Kundan 5ff4f694fd fix: Schema Diff filter chip toggle broadcasting stale empty selection (#10172)
selectFilterOption() computed newOptions inside the functional
setSelectedFilters(prev => {...}) updater, then used that same
variable to dispatch TRIGGER_CHANGE_FILTER synchronously. Since the
updater runs lazily on next render, every chip toggle broadcast an
empty filter, so the tree always showed "No difference found" until
a full re-Compare.

Compute the new selection synchronously from current state and use
it for both the state update and the dispatched event.

Fixes #10102
2026-07-24 18:14:22 +05:30
hiteshjambhale f9935b3da5 fix: honor selected EOL sequence when copying query text to clipboard (#10160)
getSelectionFromState() joined ranges with the chosen EOL but sliced
each range via state.sliceDoc(), which always uses the document's
own \n regardless of the LF/CRLF preference. Introduced in #8691
when the copy path switched from doc.sliceString(..., lineSep) to
sliceDoc(...) to fix multi-cursor copying.

Slice with state.doc.sliceString(range.from, range.to, lineSep) so
the chosen EOL applies within a range too; the #8691 multi-cursor
join behavior is unchanged.

Fixes #10158
2026-07-24 18:13:27 +05:30
Dave Page cec1b38b2f fix: warn when OAuth2 provider settings are misplaced at the top level of config (#10113)
OAuth2 provider settings are only read from the OAUTH2_CONFIG list;
bare top-level keys like OAUTH2_CLIENT_ID or
OAUTH2_SSL_CERT_VERIFICATION are silently ignored. This is an easy
trap in container deployments where every other option is set via
an individual PGADMIN_CONFIG_<KEY> env var.

Add warn_on_misplaced_oauth2_config(), called once at OAuth2 module
startup, that logs when per-provider OAUTH2_* keys exist at the top
level with no provider configured in OAUTH2_CONFIG. No behavior
change for correctly configured or unconfigured deployments.
Documents the supported container approach in oauth2.rst.

Closes #10053
2026-07-24 18:12:22 +05:30
Kundan 6f8be955a1 fix: render disconnect tree label via className, not embedded HTML (#10169)
Disconnect handlers in server.js/database.js built the transitional
tree-node label as an HTML string and passed it to setLabel(), which
writes via label.textContent — correctly escaping markup, so the
literal "<span class='text-muted'>[Disconnecting...]</span>" text
was shown instead of a greyed-out label.

Pass plain text plus a className: 'text-muted' instead; setLabel()
applies the className to the label span (default file-name class
otherwise), so muted styling comes from CSS, not injected markup.

Fixes #10106
2026-07-24 18:11:22 +05:30
Kundan 49e955a855 feat: add preference for default View Data row limit (#10170)
The unqualified "View Data" action always ran with no LIMIT, unlike
"First/Last 100 Rows" which hardcode limit=100 — unusable on large
tables with no way to cap it.

Add view_data_default_row_limit preference (int, default 0 =
unlimited) under sqleditor Options. GridCommand.__init__ applies it
as self.limit when cmd_type == VIEW_ALL_ROWS and the value is
positive; objectquery.sql already renders LIMIT only when > 0, so
no template changes needed. First/Last 100 Rows untouched.

Closes #10104
2026-07-24 18:10:13 +05:30
Kundan 6ad6024bca fix: detect a selected-but-unusable OS keyring and fall back gracefully (#10168)
evaluate_and_patch_config() only disabled USE_OS_SECRET_STORAGE when
keyring.get_keyring().name == 'fail Keyring'. On Debian 13 over RDP, a
real backend (e.g. SecretService) is selected because no D-Bus/GNOME
Keyring session is running, so the name check passes even though every
actual keyring call fails — leaving the crypt key unset and every
operation raising a bare CryptKeyMissing.

Probe the selected backend with a harmless read of a never-existing
entry after selection. A healthy backend returns None without
prompting; an unusable one raises, and we disable
USE_OS_SECRET_STORAGE so the app falls back to the master-password /
in-app crypt key mechanism instead of failing outright.

Fixes #10107
2026-07-24 18:08:27 +05:30
Kundan aeef9c2d80 fix: ALT+F5 not falling back to statement under cursor (#10173)
triggerExecution() only fell back to getQueryAt(cursor) when
getSelection() was falsy. Since #7293/#8691 (non-continuous
highlighted-block support), getSelection() flattens and joins all
ranges, so multiple empty cursor ranges can produce a truthy but
whitespace-only string (e.g. "\n"), skipping the fallback entirely —
ALT+F5 silently tried to execute whitespace. Same stale check existed
in checkUnderlineQueryCursorWarning(). Also fixes a latent
state.selection.head reference (EditorSelection has no such
property; correct field is state.selection.main.head).

Treat a whitespace-only selection as empty before the fallback check
in both functions. Real highlighted selections always contain
non-whitespace, so #7293/#9570 behavior is unaffected.

Fixes #10109
2026-07-24 18:07:26 +05:30
Ashesh Vashi 8812025a8a chore(deps): Bump patch/minor dependency bumps (#10176)
Consolidates 20 open dependabot PRs (JS + Python) into one bump, applied
directly rather than cherry-picked (PR branches were stale and would have
reverted unrelated fixes like the yarn packageManager pin). Adds further
same-major patch/minor bumps found by auditing beyond dependabot's own PR
list.

JS (web + runtime): axios, brace-expansion, form-data, undici, js-yaml,
dompurify, @babel/core, webpack, sharp, electron, eslint, react-checkbox-tree,
autoprefixer, eslint-plugin-jest, globals, jest, jest-environment-jsdom, svgo,
terser-webpack-plugin, typescript-eslint, webpack-bundle-analyzer,
@date-io/date-fns, @szhsin/react-menu, @tanstack/react-query, @types/react,
ajv, anti-trojan-source, ip-address, marked, moment-timezone, papaparse,
postcss, react, react-dom, react-draggable, react-timer-hook, sql-formatter,
zustand.

Python: certifi, selenium (version-gated: 4.45.0 requires Python >=3.10,
4.44.0 kept for <=3.9 to preserve Python 3.9 support).

Reverted / excluded, with reasons:
- azure-mgmt-resource 26.0.0: moved ResourceManagementClient from
  azure.mgmt.resource to azure.mgmt.resource.resources, breaking
  pgadmin/misc/cloud/azure/__init__.py at import time. Caught by the Python
  regression suite. Kept at 25.0.0.
- @simonwep/pickr 1.10.0: switched its build tool to tsup, which marks its
  UMD bundle as an ES module via Symbol.toStringTag instead of the
  __esModule flag Babel's interop helper checks for. Babel double-wraps the
  export, so `new Pickr(...)` resolves to a non-constructor and crashes
  every dialog that mounts a color picker -- reproduces only in the
  production/minified webpack build, not the dev bundle or Jest. Pinned to
  ~1.9.1 (tilde, not caret) so a future install can't silently float back to
  1.10.x.
- paramiko 3->5 (#9927): structurally blocked by sshtunnel 0.4.0 still
  referencing paramiko.DSSKey.
- @mui/material / @mui/x-date-pickers 7/8->9 (#10091, #10092): known
  UI-breaking, needs the accompanying component fixes tracked on a separate
  branch, not a bare version bump.
- react-arborist, @tanstack/react-virtual, react-frame-component: same-major
  bumps available but excluded -- core object-browser tree, already-fragile
  virtualization code, or tilde-pinned range respectively.
- A handful of JS packages hit Yarn 4.15's registry quarantine gate (blocks
  just-published versions); backed off to the next-older version instead of
  forcing through.

Added core-js as an explicit devDependency: it was never declared despite
webpack's Babel config (useBuiltIns: 'usage', corejs: 3) requiring it --
it only worked because @simonwep/pickr 1.9.1 happened to pull it in
transitively, which broke when pickr was briefly bumped.

Verified: eslint (web + runtime), full JS test suite (149/149 suites,
916/916 tests), webpack production build compiles clean, Python regression
suite (2388/2388, excl. Selenium), Selenium feature_tests (17/19 pass; the
2 failures trace to a local pldbgapi-extension gap, unrelated to any
bumped dependency).
2026-07-23 15:28:38 +05:30
Ashesh Vashi 1993109475 fix: pin Yarn version from packageManager field in remaining build scripts (#10175)
#10156 fixed CI build failures caused by Yarn 4.x fetching a newer patch
with different builtin compat hashes, breaking --immutable lockfile
validation, but only patched pkg/linux/build-functions.sh and the GHA
workflows. Make.bat, pkg/mac/build-functions.sh, pkg/pip/build.sh, and
Dockerfile still hardcoded 'yarn set version 4', which is what broke the
Windows Jenkins snapshot build (job 1669).
2026-07-23 13:06:29 +05:30
Ashesh Vashi b15c745dc1 fix: pin Yarn version from packageManager field in build scripts (#10156)
* fix: pin Yarn version from packageManager field in build scripts

Replace hardcoded 'yarn set version 4' in build-functions.sh with a
dynamic lookup from each workspace's package.json packageManager field.
Also syncs runtime yarn version to 4.15.0 to match web/package.json.

Fixes CI build failures caused by Yarn 4.x fetching a newer patch that
produces different builtin compat hashes, breaking --immutable lockfile
validation.
2026-07-16 11:48:36 +05:30
Luiz K Matsumura dfc4ef37d0 refactor: clarify ServerGroup relationships to Server and SharedServer (#10076)
The Server and SharedServer models each declared a relationship named
'servers' that actually pointed at the parent ServerGroup, with backrefs
('server'/'sharedserver') providing the collections. The naming was the
inverse of what it modelled and made the call sites read oddly.

Redefine the relationships in the natural direction using explicit
back_populates: ServerGroup gains 'servers' and 'sharedservers'
collections (carrying the existing delete-orphan cascade), and Server and
SharedServer each gain a 'servergroup' reference. The two call sites that
read the group name are updated from server.servers.name to
server.servergroup.name accordingly.

This is a naming/modelling cleanup with no functional or schema change, so
no migration is required.
2026-06-19 10:32:02 +01:00
somaz 7e76fb4eb0 Add Gateway API HTTPRoute support to the Helm chart (#10095)
Add an opt-in Gateway API HTTPRoute template to the Helm chart as an
alternative to the existing Ingress, addressing #9942. It is disabled by
default (httpRoute.enabled: false) so existing installs are unaffected.

The template mirrors the existing ingress.yaml conventions: the
pgadmin4.fullname backend, commonLabels/commonAnnotations propagation, and
a hostname that falls back to ingress.hostname when httpRoute.hostnames is
unset. parentRefs is required (a fail guard fires when it is empty),
apiVersion defaults to gateway.networking.k8s.io/v1, and the default rule
forwards "/" (PathPrefix) to the pgAdmin service. Custom hostnames and
rules can be supplied for full control. The new values are documented in
the chart README.
2026-06-19 09:41:54 +01:00
Jeremy Schneider 0c6740f146 feat: include authenticated user identity in HTTP access log (#9991)
Set an X-Remote-User response header containing the authenticated username
on every request when the LOG_AUTHENTICATED_USER config option is enabled
(disabled by default). This allows the HTTP access log to be configured to
include user identity via standard log format directives
(%({x-remote-user}o)s in gunicorn, %{X-Remote-User}o in Apache) without
requiring any changes to pgAdmin's session or authentication behaviour. The
default gunicorn access log format is updated to surface the header.

The username is sanitised to a header-safe value: it is transliterated to
Latin-1 (HTTP headers are Latin-1 only) and any non-printable characters,
including CR/LF, are stripped, so unusual usernames cannot cause a 500 on
every response.
2026-06-19 09:26:32 +01:00
Dave Page 888a053231 fix(mac): prune dangling symlinks before codesign so Gatekeeper accepts the bundle (#10108)
A signed, notarised and stapled pgAdmin 4.app was rejected by Gatekeeper
with "invalid destination for symbolic link in bundle". Gatekeeper walks
every symlink in the bundle and rejects the whole app if any link does
not resolve to a real file inside it; notarisation does not catch this, so
a broken link slips through stapling and only surfaces as a Gatekeeper
failure on the end user's machine.

The embedded Python.framework ships such links: an arm64-only build still
carries a bin/python3-intel64 launcher symlink (whose target
_strip_architecture deletes when it removes the foreign-arch files), and
the bundled Tcl/Tk frameworks carry PrivateHeaders links pointing at a
Versions/Current that has none.

Add a _prune_dangling_symlinks step that removes every dangling symlink in
the bundle after architecture stripping and before signing, then fails the
build if any remain, so this cannot slip past notarisation again.
2026-06-18 18:36:11 +05:30
Ashesh Vashi 3660d19535 fix: Move the 'Back to logic' link outside the <form/>.
Moving the URL from the form to avoid any unnecessary form validation.
Refs #10037
2026-06-17 15:07:48 +05:30
Ashesh Vashi 660ecf2113 fix(cli): register module preferences before set-prefs validation (#10105)
PR #10047 made `Preferences.save_cli()` validate against the registered
preference object, but `setup.py set-prefs` only enters `app_context()`
and never calls `run_before_app_start()`, leaving `Preferences.modules`
empty. Every CLI write then fell into the "Module 'X' is no longer in
use." path and was reported as "Invalid value provided".

Trigger registration explicitly (run_before_app_start enters both
app and test_request contexts internally, satisfying registration
callbacks that touch current_user) and propagate the typed error
message from save_cli so users see the actual reason a value was
rejected.
2026-06-17 14:49:53 +05:30
Ashesh Vashi 71c18fb4a7 docs: handle Vietnamese diacritics in LaTeX PDF build
The PDF docs build in the Check documentation builds workflow began
failing after the 9.16 release notes added "Mai Phạm Hiền" as the
reporter for CVE-2026-12049. pdflatex's default utf8 inputenc maps
Latin-1 and Latin-Extended-A but rejects the precomposed Vietnamese
code points U+1EA1 (a with dot below) and U+1EC1 (e with circumflex
and grave) with:

  ! LaTeX Error: Unicode character ạ (U+1EA1)
                 not set up for use with LaTeX.

Declare the two characters in the LaTeX preamble via
\DeclareUnicodeCharacter so they typeset correctly:

  ạ -> \d{a}        (a with combining dot below)
  ề -> \`{\^e}      (e with circumflex + grave)

Picked this over switching to xelatex because it is a single-file
change, keeps the existing pdflatex toolchain, and the CI workflow
already has the apt packages it needs (no .github/workflows change).

Verified by running make docs-pdf in an ubuntu:22.04 container that
mirrors check-doc-builds.yml (same apt packages, locale-gen
en_US.UTF-8, sphinx + sphinxcontrib-youtube): 682-page pgadmin4.pdf
produced cleanly, zero Unicode-character errors in the log.
2026-06-16 15:36:24 +05:30
Ashesh Vashi 9b071d7287 test(sqli-lint): groom allowlist for PG-14-default templates
Master commit 7b9b8cdd0 (#10054 / Issue #10050) rebased the
version-specific SQL templates so the new default targets PG 14, and
collapsed the 11_plus/, 12_plus/, 14_plus/ buckets into default/.
After merging that into cve-9.16, the SQL-string-literal lint
introduced for CVE-2026-12044 (658bb585d, 2ae0d3610) reported:

  4 NEW violations at the new default/ paths --
    subscriptions/sql/default/create.sql :: '{{ data.streaming}}'
    subscriptions/sql/default/update.sql :: '{{ data.streaming}}'
    grant_wizard/pg/default/sql/function.sql :: '{{ kind }}'
    grant_wizard/ppas/default/sql/function.sql :: '{{ kind }}'

  25 STALE entries pointing at the removed _plus/ paths --
    aggregates/sql/{11,12}_plus/create.sql (data.initial_val,
      data.moving_initial_val)
    tables/index_constraint/sql/11_plus/properties.sql
      (constraint_type)
    tables/sql/{11,12}_plus/properties.sql (pg_get_partkeydef)
    subscriptions/sql/14_plus/{create,update}.sql (data.sync,
      data.streaming)
    grant_wizard/{pg,ppas}/11_plus/sql/function.sql (func_type,
      icon, kind)
    search_objects/sql/{pg,ppas}/11_plus/search.sql,
      search_objects/sql/ppas/12_plus/search.sql (search_text,
      obj_type, LABELS_SCHEMACOL)

Each new entry carries the same justification as the corresponding
removed _plus/ entry (no semantic change to what is allowlisted; only
the path universe shrank). The four 'data.streaming' and 'kind'
additions are not new violations in the source-code sense -- the
expressions themselves were already allowlisted at the version-suffix
paths -- they only became visible at default/ paths after the rebase.

Verified: test_sql_string_literal_lint passes on PG 17 and PG 18
(33/33 each); pycodestyle clean.
2026-06-16 15:02:21 +05:30
Ashesh Vashi 846aa3718c Merge remote-tracking branch 'origin/master' into cve-9.16
# Conflicts:
#	docs/en_US/release_notes_9_16.rst
2026-06-16 11:47:25 +05:30
Ashesh Vashi 0c17c82ddc Updated version for release v9.16 2026-06-16 11:44:14 +05:30
dependabot[bot] 5fe93608de chore: Update cryptography to 49.0.0 requirement in /web/regression (#10087)
Updates the requirements on [cryptography](https://github.com/pyca/cryptography) to permit the latest version.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/48.0.0...49.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 49.0.0
  dependency-type: direct:production
...
2026-06-16 11:27:35 +05:30
dependabot[bot] 797927aee5 Javascript dependency: Bump axios from 1.17.0 to 1.18.0 in /runtime (#10088)
Bumps [axios](https://github.com/axios/axios) from 1.17.0 to 1.18.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.17.0...v1.18.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 11:25:13 +05:30
Dave Page e9363232a9 Allow any Font Awesome style for the OAuth2 button icon. #7641 (#10036)
The login page hardcoded the 'fab' (brands) Font Awesome style for the
OAuth2 button icon, so non-brand icons could not be used. Use the
configured OAUTH2_ICON as-is when it already specifies a style class
(e.g. 'fas fa-key'), and fall back to 'fab' when only an icon name is
given, preserving backward compatibility.
2026-06-16 11:24:20 +05:30
Dave Page 9c7bdd0765 Validate preference values set via the CLI. #7346 (#10047)
The CLI set-prefs path (save_pref -> Preferences.save_cli) wrote the raw
value to the configuration database without any type validation and
always reported success, unlike the GUI path which validates via
_Preference.set(). Route save_cli through the same set() validation
(set() now accepts an explicit user_id so it works outside a request
context), and make setup.py set-prefs check the result and report
preferences whose value was invalid.
2026-06-16 11:22:06 +05:30
Dave PageandAshesh Vashi 14ccd2619e Fix View/Edit Data crash on a stale/non-filter session transaction object (#9744) (#10071)
* Fix View/Edit Data crash on a stale/non-filter session transaction object

initialize_viewdata restores the filter and data-sorting from any command
object previously stored in session['gridData'] under the same trans_id. It
assumed that object was always a filter-capable (View/Edit Data) command and
accessed old_trans_obj._row_filter / ._data_sorting directly.

That assumption is wrong: the same trans_id may have been used by the Query
Tool (a QueryToolCommand, which does not inherit SQLFilter), or the session
may contain an incompatible object persisted by an older version after an
upgrade. In those cases the attribute access raised AttributeError, returning
a 500 from the endpoint and - in desktop mode, where this runs during startup
- preventing the application from loading at all.

Guard the restore with isinstance(old_trans_obj, SQLFilter) (short-circuited
before the did/obj_id checks) so a non-filter object is simply skipped. Add a
regression test that seeds a pickled QueryToolCommand under the trans_id and
asserts initialize/viewdata returns 200.

Closes #9744

* test: avoid hard-coded PK constraint name colliding across the suite

The regression test created its table with a fixed 'table_pk' primary key
constraint name, which collides with the same name used by TestViewData in
this package when the full suite runs against one database. That made the
CREATE TABLE fail in CI (table not found -> IndexError on the OID lookup).
Let PostgreSQL auto-name the primary key instead.

---------

Co-authored-by: Ashesh Vashi <ashesh.vashi@enterprisedb.com>
2026-06-16 11:18:53 +05:30
Domenico Sgarbossa a0c71a668e Updated Italian translation for v9.16. (#10094) 2026-06-16 11:13:17 +05:30
Ashesh Vashi db1ab34f76 Merge remote-tracking branch 'origin/master' into cve-9.16 2026-06-13 01:11:55 +05:30
Ashesh Vashi f02e9be500 docs(release-notes): backfill 9.16 entries from master commits
Add 14 release-note entries that were merged on master but not yet
captured in the 9.16 notes: 1 new feature (#2431), 6 housekeeping
(#9817, #9866, #9917, #9959, #10014, #10023) and 7 bug fixes (#9701,
#9782, #9933, #9952, #9985, #10013, #10030). Entries inserted in
numeric order within each section.

Also add an "Additional changes (no associated issue) -> Dependencies"
section mirroring the 9.15 format, listing net direct dep bumps
between REL-9_15 and HEAD across Python (requirements.txt,
tools/requirements.txt, web/regression/requirements.txt), web/
package.json, and runtime/package.json. Transitive yarn resolutions
and the setuptools pin (covered by bug fix #9829) are excluded.
2026-06-13 01:11:14 +05:30
Ashesh Vashi 4beb7e4670 Updated message catalogs for v9.16 2026-06-13 00:45:56 +05:30
Ashesh Vashi 8c4fb7f9f9 Merge remote-tracking branch 'origin/master' into cve-9.16
# Conflicts:
#	docs/en_US/release_notes_9_16.rst
2026-06-13 00:41:26 +05:30
dependabot[bot] 8c5805279d Javascript dependency: Bump shell-quote from 1.8.3 to 1.8.4 in /web (#10079) 2026-06-12 23:23:49 +05:30
Dave Page c33927f55b Add a "Back to login" link to the password pages. #9301 (#10037)
The Forgot Password and Reset Password pages had no way to navigate back
to the login page. Added a "Back to login" link (using the login URL
already used by the login form) to both pages.
2026-06-12 23:07:27 +05:30
Dave Page 94564e406b Fix double dot in generated font and image filenames. #9806 (#10032)
Webpack 5 asset modules include the leading dot in the [ext] token, so
the 'img/[name].[ext]' and 'fonts/[name].[ext]' templates produced
filenames with a double dot (e.g. Roboto-Bold..ttf). Use '[name][ext]'
so the emitted filenames are correct.
2026-06-12 23:05:02 +05:30
Dave Page 7b9b8cdd07 Rebase the version-specific SQL templates to target PostgreSQL 14 (#10054)
The base (default) SQL templates previously targeted PostgreSQL < 12.
Re-base them so the default target is 14 - the oldest supported server
version - by collapsing every version bucket <= 14 (11_plus, 12_plus,
13_plus, 14_plus and the old default) into a single `default`, keeping
per file the content a v14 server resolves today. Buckets for newer
versions (15_plus, 16_plus, 17_plus, 18_plus) are retained as overrides.

The transformation is behaviour-preserving for every server version >= 14:
template (and test-fixture) resolution is byte-identical before and after
for all supported versions, verified programmatically across every bucket
container and confirmed by the resql, ERD and Schema Diff suites against
PostgreSQL 18.

Also drop PostgreSQL/EDB Advanced Server 13 from the 9.16 supported-server
list and repoint the sqleditor explain_plan tests (which referenced the
removed 12_plus/13_plus buckets) at the new default template.

Closes #10050
2026-06-12 23:02:56 +05:30
0b4bb3ea3f Propagate column renames to FK and unique constraints in the table dialog (#9060) (#10046)
* Propagate column renames to FK and unique constraints. #9060

In the new-table dialog, the primary key already updated its column
references when a column was renamed, but foreign key and unique
constraint definitions did not, leaving them pointing at the old name.
Mirror the PK rename-propagation in the foreign_key and unique_constraint
depChange handlers (and add 'columns' to the unique constraint deps so it
fires on column changes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Address review feedback for column rename propagation (#9060)

- Remap unique constraint INCLUDE columns on rename. The INCLUDE list
  holds bare name strings (not {column} objects), so renaming an
  included column previously emitted stale DDL. Now mirrors the
  primary key INCLUDE handling.
- Add regression tests covering rename propagation in depChange for
  foreign_key and unique_constraint, including the unique constraint
  INCLUDE case.
- Correct the release note wording from "Create/Edit Table" to
  "Create Table"; the propagation only runs on the new-table path
  (state.oid === undefined).

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Ashesh Vashi <ashesh.vashi@enterprisedb.com>
2026-06-12 23:01:28 +05:30
Dave Page 6de0f371b2 Pin setuptools<82 on Python 3.9 to keep pkg_resources. #9829 (#10045)
setuptools 82 stops shipping pkg_resources, which passlib (via
Flask-Security-Too on Python 3.9) imports, so a clean install on Python
3.9 failed with "No module named 'pkg_resources'". Python 3.9 is still a
supported target (RHEL/Rocky/AlmaLinux 8 and 9 build with system Python
3.9). Split the pin by Python version, mirroring the existing
Flask-Security-Too split.
2026-06-12 22:54:53 +05:30
Dave Page 0649bcdb96 Restore Alt+drag rectangular selection in the editor. #9864 #10029 (#10043)
The fix for #9570 (stop Alt+F5 showing a crosshair cursor) changed the
rectangular-selection eventFilter to require Alt+Ctrl and moved the
crosshair cue to Control. That broke the long-standing Alt+drag block
(column) selection and left an inconsistent Ctrl crosshair cue.

Restore the default rectangularSelection() (Alt+drag) and drop
crosshairCursor entirely - the crosshair-on-Alt was exactly the artifact
#9570 wanted gone, and CodeMirror's crosshair cannot be limited to an
active drag. This brings back block selection (#9864, #10029) while
keeping #9570's intent (no crosshair on the Alt+F5 shortcut).
2026-06-12 22:53:44 +05:30
Dave Page 2a34eda5bc Fix ERD delete crash on stale foreign key column. #8318 (#10042)
removeOneToManyLink looked up a column by the FK's stored local_column
name and read .attnum unconditionally. After a column rename the stored
name no longer matches, so _.find returned undefined and .attnum threw,
blocking deletion of the table/link. Use optional chaining so a stale FK
simply doesn't match the link being removed and deletion proceeds.
2026-06-12 22:50:50 +05:30
Dave Page ba60f0ae63 Apply server foreground colour to object counts (#9766) (#10041)
Apply muted server foreground colour to column type labels (#9766)

Issue #9766 asked for both the object counts and the column type text
to follow the server's custom foreground colour. The dynamic per-server
CSS rule only recoloured the file-name and children-count spans, leaving
the column type text (span.text-muted) at its default low-contrast
colour.

Recolour span.text-muted to a reduced-emphasis blend of the foreground
colour using color-mix, so the datatype still reads as de-emphasised
secondary text while following the server colour.
2026-06-12 22:49:46 +05:30
Dave Page 9939d335e0 Let clicks pass through the object breadcrumbs popup. #9128 (#10038)
The breadcrumbs popup is an absolutely-positioned, informational overlay
at the bottom-left of the object explorer, so it intercepted pointer
events and blocked clicks on the tree items beneath it. Set
pointer-events: none so clicks pass through to the tree.
2026-06-12 22:47:40 +05:30
Dave Page 50f95f0fcb Preserve jsonb number representation in the JSON editor (#9854) (#10074)
The Query Tool's JSON cell editor pretty-printed jsonb values by parsing
and re-stringifying them with json-bignumber. While that preserves big
integers, it normalizes decimals through a JS float, so trailing
fractional zeros are dropped (10.00 -> 10, 3.140 -> 3.14). Because the
reformatted text is what gets written back, opening an unrelated jsonb
document and saving it silently rewrote numbers it never edited - which
can break applications that rely on the canonical jsonb text.

Switch the editor to lossless-json, which preserves the exact numeric
representation (big integers and trailing zeros alike), and pass it to
the underlying vanilla-jsoneditor as its parser so the in-editor format
action and tree/table modes are lossless too. The lossless helpers are
centralized in a small json_utils module with unit tests.

Closes #9854
2026-06-12 22:46:13 +05:30
Dave Page cc8ce7e153 Fix blank Query Tool screen caused by malformed runtime locale (#10066)
The Query History panel formats entry dates/times with
Date.prototype.toLocaleDateString()/toLocaleTimeString(). On runtimes
whose default locale (derived from the OS/environment) is malformed,
these throw "RangeError: Incorrect locale information provided".

Because getDateFormatted()/getTimeFormatted() are called during render
(via getGroups/getGroupHeader/getDatePrefix), the uncaught exception
unmounts the whole SQL editor React tree, leaving the user with a blank
white screen and losing any unsaved query work.

Guard both helpers and fall back to a moment-based format (moment uses
its own locale data and does not depend on the broken Intl default) so
the editor keeps working instead of crashing.

Closes #7596
2026-06-12 22:22:18 +05:30
Ashesh Vashi b458e69528 Merge remote-tracking branch 'origin/master' into cve-9.16
# Conflicts:
#	docs/en_US/release_notes_9_16.rst
2026-06-12 22:14:56 +05:30
Dave Page f6961bce49 Gracefully handle a missing crypt key in the Query Tool connection endpoints. (#10065)
After a backend/pod restart the in-memory crypt key is gone, so
manager.connection() raises CryptKeyMissing. The new-connection
endpoints (_check_server_connection_status and get_new_connection_*)
swallowed it in a broad "except Exception", logged a full ERROR
traceback, and returned a generic error the client cannot recognise.
The standard recovery (a 503 CRYPTKEY_MISSING response that the client
uses to transparently re-establish the key and retry) therefore never
fired, leaving a spurious "Crypt key is missing" message in the Query
Tool and noisy tracebacks in the log.

Re-raise CryptKeyMissing (along with ConnectionLost /
SSHTunnelConnectionLost) before the generic handler, matching the
pattern already used by the query execution path, so these endpoints
emit the standard CRYPTKEY_MISSING response and the client recovers
gracefully.

Closes #10027
2026-06-12 22:09:03 +05:30
Dave Page 922f06c7d2 Strip foreign-architecture code from the macOS bundle (#10063) (#10064)
The macOS app is built for a single architecture (matching the build
machine, via ${ARCH}), but relocatable-python pulls the python.org
universal2 installer, so the entire Python.framework ships both arm64
and x86_64 slices. PostgreSQL-sourced dylibs may be universal too. The
foreign slice is dead weight that bloats the bundle and DMG.

Add a _strip_architecture step, run after _complete_bundle and before
code-signing (lipo invalidates signatures, so the existing sign passes
re-sign the thinned binaries). It removes the universal2 stragglers
(python*-intel64 launcher, config-*-darwin/python.o) and lipo-thins
every fat Mach-O in the bundle to the build arch, preserving file modes
and warning on anything lacking the target slice. Already single-arch
inputs (Electron and its helpers) are skipped.
2026-06-12 15:57:09 +05:30
Dave Page 255550e981 Fix Query Tool password re-prompt loop for unsaved passwords (#9091) (#10073)
When a tool (Query Tool, View/Edit Data, etc.) opens a connection for a
server whose password was not saved, it relies on the password cached on
the server manager. If that cached password is unavailable, the tool
prompts for it. The entered password was POSTed to the connect_server
endpoint, which short-circuited with "Server connected" whenever the
server's primary connection was already established -- silently discarding
the entered password. The tool's own connection therefore still had no
password and re-prompted immediately, producing an infinite prompt loop
in which the re-entered password appeared to be rejected.

Cache the entered password on the server manager (encrypted) in that
short-circuit path so the tool's connection can reuse it. The password
overwrites any cached value, so a regenerated short-lived cloud auth
token (AWS RDS IAM / Azure Entra) takes effect immediately.
2026-06-12 15:51:01 +05:30
Dave Page 5a868bde90 Warn before opening a very large JSON value in the data grid (#9868) (#10075)
Opening a huge JSON/JSONB cell in the Query Tool's cell editor parses,
pretty-prints and renders the entire document on the main thread. For
pathologically large values (e.g. a jsonb object with 100k keys) this
blocks the UI thread and pgAdmin becomes completely unresponsive, with
no chance for the user to back out.

Guard the JSON editor: when the raw cell value exceeds a size threshold,
render nothing until the user confirms via a warning dialog. If they
cancel, the editor is closed without doing the expensive work. Small
values are unaffected and open immediately as before. The editor already
uses commitOnOutsideClick: false, so the confirm dialog does not dismiss
the editor.

The size-threshold logic is a small, separately tested helper.

Closes #9868
2026-06-12 15:41:35 +05:30
Dave Page 4fa95c58af Fix runtime menu refresh crash when menus not yet received (#9762) (#10070)
refreshMenus() rebuilt the application menu from the module-level
cachedMenus, which is only populated once the renderer sends its menu
definition via the 'setMenus' IPC. When a menu refresh was triggered
before that happened - e.g. an auto-update event, or the user closing
the window while the UI was still loading - cachedMenus was undefined
and bindMenuClicks() crashed with 'Cannot read properties of undefined
(reading map)', surfacing as an uncaught-exception dialog.

Guard refreshMenus() so it bails out when there are no cached menus to
rebuild.

Closes #9762
2026-06-12 15:38:19 +05:30
Dave Page ed9bf2f249 Fix syntax error editing SQL functions/procedures with a 'return' substring in the body (#10061)
The SQL-standard body detection used a regex that matched 'return'
anywhere in the body, so a plain SQL body containing a RETURNING clause
(or an identifier like 'returned_value') was wrongly treated as a
SQL-standard (BEGIN ATOMIC / RETURN) body. The generated CREATE OR
REPLACE statement then dropped the AS $BODY$ ... $BODY$ wrapper,
producing invalid SQL and a syntax error on save.

Anchor the RETURN form to the start of the body so only genuine
SQL-standard bodies are detected. Add unit tests for the detection.

Closes #10059
2026-06-12 15:25:34 +05:30
Dave Page 458dec3571 chore(deps): clear vulnerable transitive deps (tar, flatted) (#10049)
Resolves open Dependabot security advisories for transitive npm
dependencies that have no direct manifest entry (so Dependabot cannot
auto-open fix PRs for them).

tar (6 x HIGH): an old tar@6.2.1 was pulled in via
ttf2woff2@4.0.5 -> node-gyp@9.4.1 (and node-gyp's
make-fetch-happen@10 -> cacache@16 chain). ttf2woff2 6+ switched to an
ESM/default export that breaks @vusion/webfonts-generator's callable
usage, so rather than bump ttf2woff2 we override its node-gyp to
^11.2.0 via a scoped resolution. That modernises the whole sub-tree
(node-gyp 11, make-fetch-happen 14/15, cacache 19/20) onto tar@7.5.16
while keeping ttf2woff2 at 4.0.5 so webfont generation still works.

flatted (1 x HIGH): bumped 3.4.1 -> 3.4.2 in the Electron runtime
(GHSA-rf6f-7fwh-wjgh).
2026-06-12 14:50:43 +05:30
Dave Page 8dcc30a05d doc: Fix typo and clarify PGPASS_FILE documentation. #9866 (#10034)
Corrected "varible" -> "variable" and rewrote the broken sentence to
explain that PGPASS_FILE is the path to a pgpass file that is copied into
the container and used as the .pgpass file.
2026-06-12 14:49:41 +05:30
Dave Page 51e90a9827 Correct the macOS Replace shortcut in Query Tool toolbar docs (#9817) (#10033)
doc: Correct the macOS Replace shortcut in the Query Tool toolbar docs. #9817

The Edit toolbar table listed Replace as "Option + Cmd + F (MAC)" /
"Ctrl + Shift + F (Others)", but the default Replace shortcut is
Cmd/Ctrl + R, per register_editor_preferences.py.
2026-06-12 14:47:28 +05:30
Ashesh Vashi 4751795087 docs: clarify 9.16 release-notes entries for #10068 and #10078
Tighten the release-notes prose for the two security entries whose
original one-liner didn't carry the impact framing settled during
Dave Page's 2026-06-11 CVSS review.

#10068 (CVE-2026-12048): re-lead with the critical-severity chain.
Default pgAdmin Content-Security-Policy allows inline script and an
iframe srcdoc inherits the embedding origin, so attacker JavaScript
ran same-origin to the victim's authenticated pgAdmin session and
could read every saved server connection credential and issue
arbitrary SQL against every server the victim was connected to.
The previous wording described the sinks but not the impact.

#10078 (CVE-2026-12044): re-lead with the stored
pgstattuple/pgstatindex sink (low-privilege user names a table or
index foo'bar, superuser viewer triggers SQL under the superuser
role). That sub-defect is what earns the score; the description-
field self-injection is bundled because the fix is the same. The
previous wording led with the self-injection only.

Both rewrites match the descriptions used in the CVE JSON records
submitted to the PostgreSQL CNA.
2026-06-12 09:49:44 +05:30
Ashesh Vashi cc4deed6eb docs: add CVE numbers and security fix entries to 9.16 release notes
Add CVE-2026-12044 through CVE-2026-12050 to the Bug fixes section and
set the release date to 2026-06-18.
2026-06-12 09:15:44 +05:30
Ashesh Vashi 04977b593e Merge remote-tracking branch 'origin/master' into cve-9.16 2026-06-12 08:58:28 +05:30
Dave Page 0ff9ecfe67 test(llm): pin sandbox-weakening commands and parser edge cases
Extend the read-only query validator's regression suite with 17 more
scenarios lifted from a v2 of the original #10022 patch that was
never committed (recovered from an uncommitted draft).

Five new accept scenarios cover parser corner cases:
  - leading whitespace
  - trailing semicolon followed by trailing whitespace
  - leading line comment
  - semicolon inside a string literal (must not split the statement)
  - (SELECT 1) UNION (SELECT 2), confirming the leading-keyword
    traversal walks past parentheses

Twelve new reject scenarios pin commands that directly attack the
BEGIN TRANSACTION READ ONLY wrapper rather than merely attempting a
generic write:
  - bare COMMIT / END / ROLLBACK / ABORT / BEGIN as single statements
    (previously tested only as the leading verb of a multi-statement
    payload)
  - START TRANSACTION (synonym for BEGIN)
  - SAVEPOINT (savepoint manipulation)
  - SET LOCAL transaction_read_only = off
  - SET SESSION default_transaction_read_only = off
  - DISCARD ALL (resets session state -- search_path, prepared
    statements, etc.)
  - multi-statement payloads where the leading statement is an
    allowed verb (SELECT or WITH) followed by ROLLBACK and a write
    -- closer to a real attack shape than the trailing-COMMIT PoC

If a future refactor of _ALLOWED_LEADING_KEYWORDS or the statement-
counting logic lets any of these slip through, the new scenarios
fail loudly. Module is now 77 passed / 0 failed / 0 skipped.
2026-06-11 10:11:28 +05:30
Yogesh Mahajan 7aa3f85caf fix(#9701): Ensure to use psycopg3 is used while connecting to postgres DB when PGADMIN_CONFIG_CONFIG_DATABASE_URI is specified. (#9914) 2026-06-11 09:55:09 +05:30
Ashesh Vashi 2ae0d36109 fix(sqli): close remaining apostrophe-in-identifier sinks and tighten the lint
Layered follow-up to the COMMENT description SQLi fix. Closes three
related gaps the original patch did not cover.

1. Stats templates — apostrophe-in-identifier SQLi (10 sites).

The pgstattuple/pgstatindex call sites in the stats templates rendered
the target relation as an embedded single-quoted literal, e.g.

    pgstattuple('{{schema_name}}.{{table_name}}')
    pgstatindex('{{conn|qtIdent(schema)}}.{{conn|qtIdent(name)}}')

A user with CREATE privilege on a schema could plant a table or index
named `foo'bar` (PostgreSQL permits any character except NUL inside a
quoted identifier). Any viewer who then opened that object's stats
panel would render an unbalanced SQL literal. qtIdent does NOT escape
apostrophes — it escapes the embedded double quotes that delimit a
quoted identifier — so the outer single-quoted literal still broke
out. Same bug class as the COMMENT description vector, just gated on
DDL privilege instead of dialog access.

Fix replaces all 10 sites with the canonical regclass form:

    pgstattuple({{ tid }}::oid::regclass)
    pgstatindex({{ exid|cid|idx }}::oid::regclass)

The OID is already passed by each handler (tables/utils.py,
exclusion_constraint/__init__.py, index_constraint/__init__.py,
indexes/__init__.py, views/__init__.py). The cast eliminates the
embedded string literal entirely — the bug class can no longer recur
through these sites.

Files:
  tables/sql/{default,16_plus}/stats.sql
  views/templates/mviews/{pg,ppas}/default/sql/stats.sql
  tables/templates/exclusion_constraint/sql/{default,16_plus}/stats.sql
  tables/templates/index_constraint/sql/{default,16_plus}/stats.sql
  tables/templates/indexes/sql/{default,16_plus}/stats.sql

2. Lint regex — embedded-Jinja blind spot.

The original lint regex `'\{\{[^}]+\}\}'` only matched literals where
the Jinja interpolation filled the entire single-quoted body. It
missed the embedded form `'foo{{ x }}bar'` — exactly the shape used
by the stats templates above and by `'%{{ search_text }}%'` in
search_objects.

The broadened regex `'[^'\n{}]*(?:\{\{[^}]+\}\}[^'\n{}]*)+'` catches
both forms. The `[^'\n{}]` body constraint is what stops the regex
from spanning a Jinja control block `{%...%}` — without it the regex
would walk across long `{% if %}` chains and produce huge false-
positive matches that span unrelated literals.

Allowlist extended with one-line justifications for every additional
occurrence the broadened regex now surfaces (search_objects manual
escape, CATALOGS.LABELS_SCHEMACOL macro, gettext-translated catalog
labels, opcintype oidvector pairs, the pg_get_partkeydef CASE
expression where the interpolation is between two separate literals
rather than inside one).

3. qtLiteral — close the inner-except silent-failure hole.

The fail-fast for a missing `conn` was the right shape but the inner
`except Exception: print(value)` still silently returned the raw
input when `psycopg.sql.Literal(value).as_string(conn)` raised
(unadapted custom type, encoding error, etc.). Same SQL-injection
sink the outer fail-fast just plugged, gated on a different failure
mode. Removed the except so the exception propagates — callers can
now react explicitly instead of seeing an unescaped value flow into
their SQL.

Tests:
  test_stats_template_regclass_cast.py — 10 scenarios that render
    each stats template with an apostrophe-bearing identifier payload
    and assert (positive) the pgstat* call uses ::oid::regclass and
    (negative) no `pgstat*('...'` form recurs, and the apostrophe
    payload never appears inside a literal in the rendered SQL.
  test_qtliteral_no_silent_unescape.py — asserts qtLiteral raises on
    an unadaptable value rather than silently returning it.

42 tests / 0 failures across the touched packages.
2026-06-10 21:37:47 +05:30
Dave Page 658bb585d1 fix(sqli): HTML-escape description fields and harden qtLiteral
Fixes a SQL injection vulnerability where authenticated users could
break out of SQL string literals in COMMENT ON ... IS '<description>'
clauses by submitting an apostrophe-laden description through pgAdmin
dialogs. The original report covered domains; the patch expands the
fix to every site of the same pattern.

Three layers of defense:

1. Site fixes (16 places) — Replace '{{ x.description }}' with
   {{ x.description|qtLiteral(conn) }} across templates for domains,
   domain constraints, foreign tables, languages, event triggers,
   and the views OID-lookup query. Plumbs conn=self.conn through
   every render_template call that needed it. Also fixes a `{ % elif`
   Jinja typo in foreign-table schema diff that was preventing the
   elif branch from being reachable.

2. Driver hardening — qtLiteral (in utils/driver/psycopg3/__init__.py)
   used to silently return the raw unescaped value when conn was
   falsy. Now raises ValueError with a message pointing at the two
   fixes (render_template(..., conn=) or pass conn as the second
   argument). Surfaces this whole bug class loudly going forward,
   and immediately uncovered 8 latent plumbing bugs in
   schemas/__init__.py, schemas/functions/__init__.py,
   schemas/tables/utils.py, foreign_servers/__init__.py, and 7 sites
   in roles/__init__.py — all now fixed.

3. Regression tests (3 new files):
   - test_comment_description_sql_escaping.py — renders each
     previously-vulnerable template with an apostrophe-injection
     payload and asserts the escaped fragment is present (15
     scenarios).
   - test_sql_string_literal_lint.py — walks every *.sql template,
     flags every '{{ ... }}' single-quote-wrapped Jinja
     interpolation, and compares against a curated allowlist (75
     entries, each with a justification — OIDs, fixed enums,
     server-derived identifiers, SQL-comment headers, etc.). New
     occurrences fail the test until either qtLiteral is used or
     an allowlist entry is added.
   - test_qtliteral_requires_conn.py — unit test asserting the new
     fail-fast behavior.

Reported by Jasser Chebbi (j3seer).
2026-06-10 21:37:47 +05:30
Ashesh Vashi f81433ae2f Fix RCE via unauthenticated session deserialization in SQL Editor close/update routes.
The 'close' (DELETE /sqleditor/close/<trans_id>) and
'update_sqleditor_connection' (POST /sqleditor/initialize/sqleditor/
update_connection/...) endpoints were the only state-mutating SQL Editor
routes missing @pga_login_required. Both reach pickle.loads on
session['gridData'][trans_id]['command_obj'] via
close_sqleditor_session() and check_transaction_status() respectively.

Combined with a forged session file (precondition: SECRET_KEY leak +
write access to sessions/), this gave an unauthenticated attacker a
pickle deserialization sink and arbitrary code execution in the pgAdmin
process. Adding the login decorator forces is_authenticated/MFA checks
before the unsafe deserialization path is reached, matching the
convention used by every other endpoint in the module.

Includes a server-mode regression test that harvests a CSRF token from
GET /login (mirroring the attacker's path) and asserts both endpoints
reject the unauthenticated request before reaching the route body.
Self-skips in DESKTOP mode because pgAdmin's before_request hook
re-authenticates DESKTOP_USER on every request there, so no auth
decorator can be exercised in an unauthenticated state. Wired into the
existing server-mode CI workflow alongside the data-isolation tests.

Reported by Fernando Bortotti <fernando.bortotti@bsd.com.br>.
2026-06-10 20:01:44 +05:30
Ashesh Vashi 60d149864b fix(cloud): HTML-escape SDK error text across cloud module endpoints
Promote the post-connection-SQL sanitiser to a generic helper and apply
it to every cloud-module endpoint that propagates AWS / Azure / Google
SDK exception text into a JSON response field. Closes the RDS
HTML-injection vector reported against /rds/verify_credentials/ and
sweeps the same pattern across the verify-credentials, deploy, regions,
and update-server paths so no remaining cloud endpoint embeds raw
SDK / OS exception text into the response.

Sanitiser
  - Move web/pgadmin/utils/driver/psycopg3/text_sanitize.py to
    web/pgadmin/utils/text_sanitize.py.
  - Rename sanitize_driver_message -> sanitize_external_text; the
    function now describes its real role (HTML-escape text from any
    external/untrusted source — driver, cloud SDK, OS process).
  - Move tests to web/pgadmin/utils/tests/test_text_sanitize.py.
  - Update the single existing importer in psycopg3/connection.py.

Backend wrap sites
  - misc/cloud/rds/__init__.py — verify_credentials info= (the
    reported case: AWS STS IncompleteSignature echoes access_key
    verbatim into the exception string) and get_regions errormsg=
    (boto3 Session().get_available_regions exception).
  - misc/cloud/azure/__init__.py — verify_credentials and
    check_cluster_name_availability errormsg= (3 sites).
  - misc/cloud/google/__init__.py — verify_credentials
    (PermissionError + generic Exception path-resolution branches and
    the get_auth_url error), verification_ack, projects, regions,
    instance_types, database_versions — 8 sites covering every path
    that propagates SDK / file-resolution exception text.
  - misc/cloud/__init__.py — central /deploy endpoint (errormsg=resp
    where resp is str(e) bubbled up from deploy_on_rds /
    deploy_on_azure / deploy_on_google) and update_cloud_server
    (errormsg=server where server is the str(e) from db.session.commit
    failure).

Frontend
  - components/FormComponents.jsx — declare plainText in
    FormFooterMessage.propTypes (it already passes through via
    spread).
  - misc/cloud/static/js/CloudWizard.jsx — add plainText to the three
    FormFooterMessage sites. INFO messages there are gettext literals,
    so plain-text rendering is uniformly safe; the ERROR path now
    follows the SafeMessage contract for backend-derived strings.

Tests
  - rds/tests/test_rds_verify_credentials_xss.py — wiring test that
    patches RDS.validate_credentials to return an AWS-shaped error
    embedding an <iframe> payload, asserts the response info field is
    entity-encoded and contains no raw markup. Includes a happy-path
    guard against the sanitiser altering 'verified'.
  - azure/tests/test_azure_verify_credentials_xss.py — same pattern,
    Azure.__init__ touches current_user so the Azure class is patched
    to a stand-in that yields the HTML-bearing validation error.
  - google/tests/test_google_verify_credentials_xss.py — covers the
    PermissionError and generic-Exception branches of the
    client_secret_file resolution path (most directly user-influenced).
  - test_post_connection_sql_xss.py — docstring + comment updates for
    the renamed function.

Frontend rendering is already DOMPurify-guarded at the NotifierMessage
sink, so the reported PoC payload would not execute even without
these backend changes; the fixes here are the defence-in-depth layer
the report's section-5 "Suggested directions" calls out, ensuring API
consumers other than the browser (audit logs, third-party clients)
never see raw markup.

876 / 876 JS tests + ESLint clean. Cloud / utils / server-groups
Python test packages pass (24 + 60 + 102, with pre-existing skips
unchanged).
2026-06-10 20:01:44 +05:30
Dave Page 9e370d3cb6 fix(xss): comprehensive XSS hardening across notification and Explain flows
Mitigates a stored XSS vector where a malicious PostgreSQL server's
ErrorResponse — or any backend-derived string — could inject HTML into
pgAdmin's DOM via the notifier, Explain visualiser, or form-input error
paths. Combines three complementary layers of defence.

Frontend — DOMPurify at every HTMLReactParse sink:
  - NotifierMessage (toasts) and FormFooterMessage
  - FormInput help / error messages, FormNote
  - ModalProvider AlertContent + confirmDelete
  - ToolErrorView (tool open failure)
  - Explain/Analysis NodeText (plan extra-info renderer)
  - SQL editor confirm dialogs (transaction, promotion, close-running)
  - Dialogs/ConfirmSaveContent
  - PreferencesHelper modal alert
  - SelectThemes helper text
  No HTMLReactParse call site renders text unsanitised after this.

Frontend — plain-text contract for backend-derived strings:
  - New components/SafeMessage.jsx exports SafeMessage (plain text,
    preserves newlines via pre-wrap) and SafeHtmlMessage (sanitised
    HTML via DOMPurify + html-react-parser).
  - NotifierMessage and ModalProvider.AlertContent accept a `plainText`
    prop. When true the body renders via SafeMessage.
  - Notifier gains errorText / alertText / warningText / infoText /
    successText methods that plumb {plainText: true} through. These
    are the correct choice whenever the message may originate from a
    PostgreSQL server, driver, OS process, remote API, or any other
    untrusted channel.
  - pgRespErrorNotify and pgNotifier use alertText / errorText
    internally. The redundant _.escape and \\n -> <br/> substitution
    in pgNotifier are gone — the SafeMessage container's pre-wrap
    preserves newlines without further transformation.
  - FormInput.errorMessage and ToolErrorView render as plain text
    unconditionally; their inputs are always validation / driver
    errors.
  - ~50 callers across browser, tools, dashboard, debugger, misc, llm,
    preferences, schema diff, and the SQL editor are migrated to the
    *Text variants where they pass a backend-derived field
    (err.response.data.errormsg, parseApiError(error), res.errormsg,
    res.info, res.data.result, err.message, interpolated PG object
    names).
  - Browser auto-update notification rewritten to plain text — the URL
    is shown inline instead of being interpolated into an <a href>
    attribute. The gettext template-literal anti-pattern on that path
    is fixed too (URL is a separate %s argument).

Cleanup:
  - helpers/Notifier.jsx — remove the dead AlertContent function and
    its seven imports (Box, CloseIcon, DefaultButton, PrimaryButton,
    HTMLReactParser, CheckRoundedIcon). The function was defined but
    never instantiated; the real top-level alert path goes through
    ModalProvider.AlertContent. Eliminates a false-positive sink that
    recent audits cite — the cited line numbers reference a function
    that never runs.

Explain — escape Recheck Cond / Exact Heap Blocks:
  - nodeExplainTableData concatenates plan-node fields into HTML
    strings parsed by html-react-parser. Every sibling field (Filter,
    Index Cond, Hash Cond, Join Filter, Rows Removed by Filter, Hash
    Buckets/Batches/Peak Memory) wraps the value in _.escape();
    Recheck Cond and Exact Heap Blocks were the two outliers
    concatenating raw. An attacker who introduces a table with a
    crafted column name and triggers a Bitmap Heap Scan over it could
    inject HTML into Explain output that a victim later views in the
    visualiser. With the rest of the XSS fix this would otherwise be
    neutralised by DOMPurify at the sink — escaping at construction
    matches the sibling fields and provides defence in depth.

Backend — HTML-escape PG-returned text in post-connection-SQL:
  - New web/pgadmin/utils/driver/psycopg3/text_sanitize.py exports
    sanitize_driver_message. Strips C0 control characters
    (0x00-0x08, 0x0B, 0x0C, 0x0E-0x1F, 0x7F) — preserving TAB, LF,
    CR so multi-line error messages stay readable — then HTML-escapes
    via html.escape(..., quote=True).
  - execute_post_connection_sql logs the raw PG-returned text so the
    server log stays human-readable, and applies the escape only to
    the value crossing into the JSON response body, where downstream
    consumers may render it as HTML:
      <iframe srcdoc="..."> -> &lt;iframe srcdoc=&quot;...&quot;&gt;
    Real Postgres errors (which never contain literal markup) round-
    trip unchanged for human readability. Protects third-party JSON
    consumers (audit logs, API clients, support tickets) that do not
    have the frontend's DOMPurify.

Tests
  - components/SafeMessage.spec.js — 25 payloads (iframe srcdoc, SVG
    onload, MathML href javascript:, embed/object data:, marquee
    onstart, template/noscript, CSS expression, etc.).
  - Notifier.spec.js — 9 cases (errorText / alertText plumbing,
    pgRespErrorNotify 410 vs non-410, pgNotifier raw errormsg pass-
    through, "Unknown error" fallback).
  - ToolErrorView.spec.js — 3 cases.
  - ModalProvider.spec.js — 4 cases.
  - FormComponents.spec.js extended with NotifierMessage plainText
    mode + FormInput errorMessage plain-text rendering.
  - Explain regression test renders Analysis with HTML-laden extraInfo
    and asserts no <iframe> / <script> reaches the DOM.
  - Python: test_sanitize_driver_message.py (21 sanitiser + 5
    execute_post_connection_sql wiring scenarios with a real Flask +
    flask-babel app context and a stand-in connection).
  - test_post_connection_sql_xss.py — end-to-end integration: register
    a server, set post_connection_sql to a query referencing a relation
    whose name contains an iframe payload, POST to the connect endpoint,
    and assert the response JSON errormsg is entity-encoded and never
    raw markup.
  - fake_pgadmin.js notifier mocks and enable_disable_triggers_spec.js
    spies updated for the new API.

875 / 875 JS tests pass; ESLint clean.
2026-06-10 20:01:44 +05:30
Khushboo Vashi 04fa05c1e6 Fix missing ALTER ... SET DEFAULT for inherited columns in table SQL. (#9774)
When a table inherits a column from a parent, the generated table
SQL/EDIT script omitted the column's default. Emit a post-create
ALTER TABLE ... ALTER COLUMN ... SET DEFAULT for inherited columns
that carry a default, and show the default in the inherited-column
comment, across all version buckets.

Generated columns (colconstype 'g') are excluded from both the new
ALTER statement and the comment default, consistent with the inline
column-definition logic, since SET DEFAULT is invalid for a generated
column.
2026-06-09 15:44:22 +01:00
ZoroXL 77dc9d77ec Fix infinite loading after an idle connection is dropped (#6308)
When a database connection was silently dropped while pgAdmin sat idle
(common on Linux Desktop behind a firewall/NAT), the Object Explorer and
Query Tool would hang on an infinite spinner instead of offering to
reconnect, because connected() only checks local driver state and misses
stale/half-open TCP sockets.

- ping() now performs a real network check (SELECT 1) guarded by the
  connection's transaction_status, so an in-progress query or open
  transaction is never disrupted; on failure it tears down the dead
  connection and returns False.
- The Object Explorer children() endpoint uses ping() to detect a dead
  connection up front and returns 503 CONNECTION_LOST; the tree shows a
  reconnect dialog (deduplicated per server) and marks the node
  disconnected.
- TCP keepalive defaults are applied to all connections so the OS
  surfaces dead sockets in seconds rather than the full retransmission
  timeout.
- The Query Tool re-checks connection status when its tab becomes
  visible again, and its layout/visibility listeners are now cleaned up
  on unmount.

Refs #9700, #8279. Adds a 9.16 release note.
2026-06-09 15:26:28 +01:00
Manolis Stamatogiannakis 8ad45be9c8 Use ServerManager's passfile in connect() credential gate. (#9810)
The passfile kwarg passed to Connection.connect() was only ever used as
a gate for the passexec fallback; it was never forwarded to
create_connection_string(), which builds the DSN's passfile from the
ServerManager's connection parameters. This made the gate inconsistent
with the passfile actually used for the connection.

Use the ServerManager passfile for the credential gate so the check
matches what is used to connect. The manager passfile now takes
precedence over both passexec and any passfile kwarg; warnings are
emitted when either is ignored in its favor.
2026-06-09 15:23:50 +01:00
Dave Page 2918e16734 docs: move misfiled release-note entries from 9.9 to 9.16
The entries for #9875 (EXPLAIN/blank-line query extraction) and #9988
(OAuth2 metadata URL guidance) were added to release_notes_9_9.rst,
which is an already-released version. Move them to the in-progress
9.16 notes where they belong.
2026-06-09 15:22:33 +01:00
Daniel Zabel 06300e76a0 Make init container security context configurable in the Helm chart (#9646)
The two init containers in the Helm deployment template had hardcoded
securityContext blocks, unlike the main container which already renders
its context from .Values.containerSecurityContext via the
renderSecurityContext helper. Switch the init containers to the same
pattern so operators can customise (or disable) their security context.

Default behaviour is unchanged: containerSecurityContext defaults to
enabled with values identical to the previous hardcoded block, and the
helper continues to gate appArmorProfile on
global.compatibility.appArmor.enabled. Verified with helm template that
the rendered init-container securityContext is unchanged for the default
values, honours the appArmor toggle, and is omitted entirely when
containerSecurityContext.enabled=false.

Adds a 9.16 release note.
2026-06-09 15:17:01 +01:00
Ashesh Vashi 397be4e70e Fixed an issue where EXPLAIN and EXPLAIN ANALYZE failed when blank lines separate clauses in the SQL query. (#9875)
getQueryAt now uses the syntax tree as the primary check for whether a
blank-line boundary cut through a SQL statement. It is split into two
helpers: _findQueryBoundaries (the original scan, parameterized by
stopAtBlankLine) and _needsExpansion, which detects when a Statement
node straddles the extracted range and re-scans ignoring blank lines.

A STATEMENT_STARTERS keyword list guards the case where the parser
merges semicolon-less queries into one Statement, and WRAPPER_STARTERS
(EXPLAIN, ANALYZE, WITH) force expansion when the Statement extends past
the range. Also fixes a Lezer boundary bug (tree.iterate is inclusive at
boundaries) with a node.to > startPos check. Adds 21 tests covering
EXPLAIN, negative no-merge cases, comments, and boundary edge cases.
2026-06-09 15:10:07 +01:00
Adam Tao 0223e8a026 fix(openai): tolerate empty/null fields in streaming tool-call deltas (#9828)
Some OpenAI-compatible providers emit empty or null name/arguments/id
fields in streaming continuation deltas to keep the response schema
stable. pgAdmin's accumulator overwrote the real tool name (captured in
the first delta) with the later null, producing a tool call named "null"
that could not be dispatched.

Skip falsy name/arguments/id when accumulating (matching the OpenAI
Python SDK, which ignores nulls the same way) so the values captured in
the first delta survive. Also guard against a null `function` object in
a delta, which previously raised TypeError. Without the id guard a null
id in a continuation delta clobbered the real id, which the final build
then replaced with a random uuid rather than the provider's id.

Adds a unit test covering the null-continuation, multi-chunk-arguments,
and null-function cases, and a 9.16 release note.
2026-06-09 15:08:19 +01:00
Ashesh Vashi 89e84eb913 OAuth2: actionable error when openid scope lacks OAUTH2_SERVER_METADATA_URL (#10007)
When OAUTH2_SCOPE contains 'openid' but OAUTH2_SERVER_METADATA_URL is
not set, Authlib fails deep inside id_token verification with a cryptic
`Missing "jwks_uri" in metadata` error that names neither the config
knob nor the fix.

Add a pre-flight check at the entry of _authorize_access_token: if the
scope includes 'openid' and no (non-whitespace) metadata URL is set,
raise a RuntimeError with actionable guidance before any network
round-trip. server_metadata_url is the only way pgAdmin feeds JWKS to
Authlib, so this carries no regression risk for correctly-configured
providers. Clarify the OAUTH2_SERVER_METADATA_URL comment in config.py
and add regression coverage.
2026-06-09 14:53:28 +01:00
Ashesh Vashi 879ae40cbb CLI: skip delete_adhoc_servers() in CLI mode (#10008) 2026-06-09 14:47:48 +01:00
Ashesh Vashi c88c8f612e docker: read PGADMIN_CONFIG_CONFIG_DATABASE_URI safely via os.environ (#9984)
The container entrypoint substituted ${PGADMIN_CONFIG_CONFIG_DATABASE_URI}
into a double-quoted Python string for `python3 -c`. Combined with the
config_distro.py convention (where the env var's value must itself be a
Python literal, i.e. users set it to 'postgresql+psycopg://...'), the
entrypoint re-wrapped the already-quoted value, producing a string with
literal quotes inside that SQLAlchemy could not parse -- and the Python
crash made the first-launch check capture an empty string, silently
skipping PGADMIN_DEFAULT_EMAIL / PGADMIN_DEFAULT_PASSWORD setup.

Read the env var inside Python via os.environ so the shell no longer
participates in Python-literal quoting (also removing a shell-injection
surface), and use ast.literal_eval to unwrap the legacy quoted form while
letting raw values pass through. external_config_db_exists now stays
"False" on any Python failure so first-launch setup still runs.

Adds a 9.16 release note.
2026-06-09 14:44:26 +01:00
Ashesh Vashi 24f0597dc8 Server UI: clarify SSH tunnel identity-file password prompt label (#10010) 2026-06-09 14:35:42 +01:00
Ashesh Vashi 303f6a2dd8 Use resolve_fks=False in migration reflect() so stale FKs don't crash startup (#9976)
An old configuration database (e.g. a pre-9.0 pgadmin4.db lingering in
%appdata%) can carry a stale foreign key such as server.user_id ->
user_old, a table removed long ago. SQLAlchemy's MetaData.reflect()
defaults to resolve_fks=True, which auto-follows the reflected table's
foreign keys and reflects their targets too; the orphan target trips
NoSuchTableError and aborts the startup migration, surfacing in the GUI
as the misleading "Server could not be contacted".

None of the migrations use the FK-target tables -- each operates only on
the explicitly requested table(s). Pass resolve_fks=False at all 14
meta.reflect() call sites across the 12 migration files so reflection no
longer cascades into broken FK targets. Behaviour is unchanged for
healthy databases.

Adds a 9.16 release note.
2026-06-09 14:32:19 +01:00
Dave PageandClaude Opus 4.8 8afe14ec36 Remove design proposal document committed in error
This internal design proposal was inadvertently included with the
session and file-manager hardening changes and should not have been
added to the repository.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 14:31:10 +01:00
Ashesh Vashi 25415b888a docs(container): warn about K8s init-container tag mismatch and RollingUpdate hazard on shared data volumes (#10014) 2026-06-09 14:28:16 +01:00
Pavan Manish c720a33b44 Add toast_tuple_target to the Materialized View dialog (#9626)
Exposes the PostgreSQL 11+ TOAST_TUPLE_TARGET storage parameter in the
Materialized View properties dialog, mirroring the existing FILLFACTOR
support: an integer field (128-8160) in the Definition group, extracted
from reloptions in properties.sql, emitted in the CREATE ... WITH clause,
and SET/RESET on edit. The recreate-on-definition-change path preserves
the value.

The dialog field and SQL are applied to the version buckets that
supported servers actually resolve to. The original change only touched
the legacy default/ bucket (PG < 12), so it had no effect on any
supported server (13-18, which resolve to 13_plus/15_plus); the
create/properties/update templates are now updated in the 12_plus,
13_plus and 15_plus buckets too. Template output is byte-identical to
the previous SQL when toast_tuple_target is unset.

Adds a 9.16 release note.
2026-06-09 14:16:50 +01:00
Ashesh Vashi f9b9bc9d40 fix(sqleditor): skip read-only columns when saving inserted rows (#10015) 2026-06-09 14:12:11 +01:00
pavanmanishd 39684cdf48 Generate ALTER TABLE SET UNLOGGED/LOGGED when persistence is changed (#9768)
Wire the relpersistence change through to the table update SQL across all
version buckets (default, 11_plus, 12_plus, 15_plus) so the Unlogged toggle
emits ALTER TABLE ... SET LOGGED/UNLOGGED on every supported server.

Closes #9677.
2026-06-09 14:00:15 +01:00
pavanmanishd 4c5702dd47 Close tab on middle-click (#9767)
Closes #9699.
2026-06-09 13:53:10 +01:00
Ashesh Vashi 6bc4341383 fix(llm): expand allowlist for self-hosted endpoints and stop silent fallbacks (#10016) 2026-06-09 13:48:12 +01:00
Ashesh Vashi 5b17cad8a4 fix(pkg/linux): pin psycopg-c build to x86-64 v1 baseline (#10017) 2026-06-09 13:42:30 +01:00
Ashesh Vashi 4dd5cdd9ea fix(schema-diff): reverse-engineer SERIAL columns by default (#10020)
Schema Diff's "Generate Script" emitted CREATE TABLE DDL with
the libpq-expanded form of SERIAL columns:

    col integer NOT NULL DEFAULT nextval('table_col_seq'::regclass)

instead of preserving the SERIAL declaration. Applied to a clean
target, that script fails with `relation "table_col_seq" does
not exist` because the sequence is never created — exactly the
symptom in issue #9896.

SERIAL detection already existed in
columns/utils.py:get_formatted_columns (added in 115208c8d for
ERD generation, Nov 2023), but was gated behind a
``with_serial_cols`` parameter that defaulted to False. Only ERD
and the Schema Diff *comparison* phase opted in via explicit
True. The Schema Diff *Generate Script* path and the browser
tree's *CREATE Script* view went through `_get_resql_for_table`
→ `_formatter(data)` without specifying it, so SERIAL detection
was skipped and #9896 reproduced.

There is no use case where pgAdmin should knowingly emit the
expanded libpq form: SERIAL is purely a CREATE-time macro that
PostgreSQL expands into an integer column plus an implicit
sequence owned by the column. The detection logic is reversing
that expansion, which is the correct interpretation in all
contexts (DDL emission, comparison, ERD, properties dialog).

Flip the default to True at all four declaration sites:

- columns/utils.py: get_formatted_columns
- utils.py: BaseTableView._formatter
- utils.py: BaseTableView.fetch_tables
- __init__.py: TableView.fetch_tables

All four existing explicit-True callers (ERD x2, Schema Diff
compare x2) are unaffected. Silent callers that previously got
the buggy False — `_get_resql_for_table` (Schema Diff Generate
Script and browser CREATE Script), `select_sql` / `insert_sql` /
`update_sql` in the table node, and one path in the partition
flow — now correctly get SERIAL detection. The SELECT/INSERT/
UPDATE generators are unaffected regardless: they emit only
column names, which SERIAL detection never touches (it rewrites
the column type and clears `defval`, leaving the name intact).
The table edit path is likewise safe: `get_sql` diffs each
changed column against a freshly re-fetched old column state
that bypasses SERIAL detection, so the reprojected `old_data`
columns are never consulted for column DDL.

Adds a resql regression in pg/{12_plus, 14_plus, 16_plus}: a
CREATE TABLE scenario covering ``serial`` / ``bigserial`` /
``smallserial`` columns plus a plain ``text`` column, with the
expected reverse-engineered DDL preserving the SERIAL keywords.
Would have failed before this fix.

Known coverage gaps (not blockers for this PR):

- PG11 (uses ``pg/11_plus`` / ``pg/default``): test intentionally
  not added there because PG11 still emits ``WITH (OIDS = FALSE)``
  which the existing expected-output convention reflects, and
  without a live PG11 instance I can't verify the expected SQL
  variant. The source-side fix still applies to PG11.
- PPAS (``ppas/*`` test dirs): not added because PPAS output may
  diverge subtly (oraplus / hyphenated identifiers) and I don't
  have a PPAS instance to verify against. The source-side fix
  applies equally to PPAS.
- The SERIAL detection heuristic is name-based
  (``<table>_<col>_seq``); sequence/table/column renames break
  detection. Pre-existing in 115208c8d; could be replaced with
  proper ``pg_depend``-based detection in a follow-up.

Fixes #9896
2026-06-09 13:35:12 +01:00
Ashesh VashiandClaude Opus 4.8 833504f1be fix(schema-diff): aggregate child counts at parent group rows (#10021)
In Tools > Schema Diff, the top-level group rows ("Schema Objects",
"Database Objects") rendered blank difference counts even when their
child object-type groups (Functions, Tables, Sequences, ...) listed
Source-Only / Target-Only / Different objects, giving no signal at the
parent level that anything differed.

The results tree has three levels: top-level object-group rows, mid-level
object-type rows, and leaf object rows carrying a status. setRecordCount()
only handled leaf children, so mid-level rows counted correctly but
top-level rows (whose children are mid-level rows with no status) stayed
at zero. The render gate 'identicalCount' in row also skipped count
rendering for top-level rows because generateGridData() never seeded
those fields on them.

Fix: setRecordCount() now recognises counted-group children (recursing to
refresh their counts so filter changes propagate, then rolling the totals
up); leaf-only behaviour is unchanged. generateGridData() seeds the four
count fields on every top-level group row so the render gate fires. Adds
Jest coverage driving the now-exported setRecordCount directly, including
the reporter's exact tree and a filter-refresh case.

Fixes #9892.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 13:32:47 +01:00
Ashesh VashiandClaude Opus 4.8 94a7687d2d chore(cloud): remove EDB BigAnimal cloud deployment feature (#10018)
Removes the EDB BigAnimal cloud-deployment integration from the Cloud
Wizard. AWS RDS, Azure Database, and Google Cloud SQL remain as the
supported deployment targets. Covers the backend blueprint and pgacloud
provider, the frontend wizard steps/components/constants/icons, the
documentation page and screenshots, and stray BigAnimal references in
docstrings.

The BigAnimal-only "Cluster Type" wizard step is removed and the
remaining steps renumber from 0-5 to 0-4. As a side effect, the Azure
cluster-name availability check (previously dead code at activeStep == 2,
skipped past by the now-removed step) is now exercised. Two latent bugs
in that check are fixed at the same time: it inspected res.data.success
although checkClusternameAvailbility already resolves res.data, so a name
collision was never reported; and it passed an Error object to gettext(),
which cannot render it. It now uses res.success and surfaces
error.message with a readable fallback.

A 9.16 Housekeeping release-note entry is added documenting the removal.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 13:16:48 +01:00
Dave PageandClaude Opus 4.8 1a8dcd8bcc Add release notes scaffold for 9.16. (#10048)
Create release_notes_9_16.rst with empty sections and add it to the
release notes toctree, so that individual fix/feature PRs can add their
entries without each recreating the file.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 12:36:30 +01:00
Hari Prasad 937d34ea2d refactor: Optimize startup time with adaptive server pinging (#9782)
* Fix exponential backoff logic and ping race condition in desktop startup
* Adaptive polling mechanism in startDesktopMode().
   -  Fix exponential backoff to cap at 1000ms instead of cycling back to 100ms
   - Move pingInProgress flag before the async pingServer() call to prevent race conditions
* Update showErrorDialog to use clearTimeout consistent with setTimeout-based scheduling
2026-06-09 15:33:51 +05:30
Ashesh Vashi ec3e6414e7 fix: accept prepare/binary kwargs in DictCursor.execute(..) (#10030)
psycopg.Connection.execute(query, params, *, prepare=None, binary=False)
delegates to its underlying cursor as
cur.execute(query, params, prepare=prepare). The DictCursor /
AsyncDictCursor in pgadmin.utils.driver.psycopg3.cursor narrowed the
signature to (self, query, params=None), so any caller that uses the
high-level Connection.execute() path with a cursor_factory=DictCursor
connection hits

    TypeError: execute() got an unexpected keyword argument 'prepare'

The most visible victim is psycopg_pool.ConnectionPool.check_connection,
which sends conn.execute("") to validate every checkout — every
connection then looks broken to the pool and getconn() times out.

Forward prepare and binary (keyword-only) to the underlying
psycopg.Cursor / psycopg.AsyncCursor. Defaults match psycopg's own,
so existing callers see no behavior change.

Adds a regression test asserting both classes expose the kwargs as
keyword-only parameters. The test docstring leads with psycopg.Cursor
substitutability (DictCursor is a Cursor subclass; both kwargs must be
accepted to remain substitutable) and notes that Connection.execute is
just the most visible failure path — it forwards prepare but handles
binary by setting cur.format instead of forwarding it.
2026-06-09 14:11:09 +05:30
dependabot[bot] d2bdd25160 Javascript dependency: Bump axios from 1.16.1 to 1.17.0 in /runtime (#10025)
Bumps [axios](https://github.com/axios/axios) from 1.16.1 to 1.17.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.16.1...v1.17.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 09:09:48 +01:00
Ashesh Vashi 8383c1220b chore(tests): unskip MFA validation-view test by completing dummy harness
The previous commit (2e14bd95d) made the MFA test package discoverable
and resilient but left one scenario --
'Validation view of a MFA method should return a HTML tags' -- as a
documented unittest.SkipTest. The skip reason was that
validate.html -> security/render_page.html -> base.html references
'current_app' and 'csrf_token()' in Jinja, and the dummy Flask app
built by test_create_dummy_app() does not expose either: pgAdmin's
real create_app() injects current_app via an @app.context_processor
(web/pgadmin/__init__.py:922) and Flask-WTF registers csrf_token() in
the Jinja env. The bare Flask(name, ...) used by the dummy app has
neither, so the GET-path render fails with
UndefinedError: 'current_app' is undefined.

Add the same two globals to the dummy app:

* A @app.context_processor returning {'current_app': current_app} so
  the Flask proxy is bound at render time, mirroring what
  create_app() does in production.
* A jinja_env.globals['csrf_token'] = lambda: 'dummy-csrf-token' that
  matches what Flask-WTF would otherwise install. Tests asserting on
  the rendered HTML can rely on the marker being present and stable.

With both globals available the template renders, /mfa/validate
returns a 200 HTML response, and the scenario goes from SkipTest to
a real assertion. The fix is intentionally scoped to the dummy harness
in tests/utils.py -- no production code change.

Result on this worktree: pgadmin.authenticate.mfa.tests now runs as
13 passed / 0 failed / 0 skipped (was 12/0/1). Full suite goes from
1818/0/444 to 1819/0/443.
2026-06-08 19:41:51 +05:30
Ashesh Vashi 2e14bd95dd chore(tests): make MFA test package discoverable and resilient
The MFA test directory was missing __init__.py, so
find_modules('pgadmin', False, True) in regression/runtests.py could
not walk into it. The test classes therefore never reached the
TestsGeneratorRegistry registry and the entire pgadmin.authenticate.mfa
test suite was silently absent from the default test run. The
regression for #10028 added in this branch was caught by that gap.

Adding the missing __init__.py exposes a second pre-existing problem:
TestMFATests.setUp called BaseTestGenerator.setUp, which posts to
/browser/server/connect/... and asserts a 200 response. The MFA
scenarios all run against a dummy Flask app (or pure mocks), so that
endpoint is not registered and the connect_server assertion fires
before any check_*() function runs. Skip the BaseTestGenerator setUp
since these scenarios deliberately do not need a real PostgreSQL
server.

Three further fixes that surface once the suite actually runs:

* mfa_enabled() and init_app() both short-circuit when SERVER_MODE
  is False. test_config.json defaults to DESKTOP mode, so every
  scenario in the suite was taking the disabled path. Force
  SERVER_MODE=True for the duration of the TestMFATests class and
  restore the previous value in tearDownClass.

* check_validation_view_content patched flask.current_app to capture
  logger.exception() calls. Those only fire on the POST path of
  /mfa/validate; the test exercises only the GET path, so the patch
  was dead code -- and additionally turned flask.current_app into a
  MagicMock, which broke Jinja's lookup of current_app in
  validate.html. Drop the patch and the now-unused ValidationException
  import.

* check_validation_view_content still cannot render validate.html
  against the bare dummy Flask app because the template references
  current_app.config and extends Flask-Security's
  security/render_page.html, neither of which the dummy app provides.
  Skip the scenario with a clear unittest.SkipTest reason rather than
  paper over with a brittle patch; rebuilding the dummy harness to
  expose those globals is its own follow-up.

Result on this worktree: pgadmin.authenticate.mfa.tests now runs as
12 passed / 0 failed / 1 skipped (the dummy-app/template gap),
up from a silent 0/0/0. Full suite goes from 1806/0/443 to 1818/0/444.
2026-06-08 19:25:48 +05:30
Dave Page fff6a48185 fix(mfa): reject external 'next' targets in MFA flow to close open redirect
The MFA flow honoured the user-supplied "next" query/form parameter
without checking that it pointed back inside pgAdmin, so an attacker
who got a logged-in user to click /mfa/validate?next=<external> could
land them on an attacker-controlled host straight out of the auth
flow -- a trusted-domain redirect ideal for credential-phishing
follow-on.

Add a single _is_safe_redirect_url helper that allows only same-origin
http(s) targets (relative paths included) and rejects:

* external hosts in absolute and protocol-relative ("//host") form;
* non-http schemes a browser will still follow (javascript:, data:,
  mailto:);
* userinfo tricks ("http://localhost@attacker.example/");
* backslash variants ("/\\host", "\\\\host") that some browsers
  normalize to forward slashes, enabling protocol-relative bypasses;
* empty / missing targets.

Gate every redirect that consumes the user-supplied next value through
the helper -- the GET and POST branches of /mfa/validate and the POST
branch of /mfa/register -- falling back to the internal browser index
when the target is anything other than safe. The registration POST
keeps its existing 'internal' sentinel ("rendered from the in-app
dialog") since that string is matched exactly and is not a URL.

Ship the validator with a dedicated table-driven unit test covering
each accept/reject category and an integration test that POCs the
attacker payload from the report and asserts the response redirects
to the internal index instead of attacker.example.

Reported by: Mai Phạm Hiền <mai.phamhien171@gmail.com>
Reviewed by: Kundan Sable <kundan.sable@enterprisedb.com>
2026-06-08 18:55:51 +05:30
Ashesh Vashi 3b1a6ce481 fix(server): schema-qualify remaining pg_catalog calls in ServerNode
The SQL injection fix for create_restore_point now calls
pg_catalog.pg_create_restore_point so that a non-default search_path
on the connection cannot redirect the call to a shadow definition.
Apply the same hardening to the other pg_* calls in the same file
that were still unqualified: pg_reload_conf in reload_configuration,
and pg_xlog_replay_pause / pg_wal_replay_pause / pg_xlog_replay_resume
/ pg_wal_replay_resume in wal_replay.

These were not exploitable on their own -- the SQL string is static
and not user-derived -- but resolving them via pg_catalog removes any
dependency on the connection's search_path being trustworthy.
2026-06-08 18:42:40 +05:30
Dave Page 3379c39865 fix(server): parametrise named restore point query to prevent SQL injection
ServerNode.create_restore_point interpolated the user-supplied "value"
field directly into a SQL string with str.format(), so an authenticated
pgAdmin user could inject additional statements through that endpoint.
The injection ran with the user's own database role -- so it did not
cross a privilege boundary and granted no capability the role does not
already have via the Query Tool -- but it bypassed the documented SQL-
execution path and any application-layer controls a deployment may
have built around the Query Tool.

Pass the name as a bound parameter, and qualify the function with
pg_catalog so a non-default search_path on the connection cannot
redirect the call to a shadow definition.

Add a regression test that mocks the driver and asserts the call
arrives as ("SELECT pg_catalog.pg_create_restore_point(%s);", (name,))
with no payload spliced into the SQL text, plus defence-in-depth
assertions that the SQL string contains neither pg_sleep nor the PoC's
closing-quote signature, so a future refactor that reintroduces string
formatting is caught.

Reported by: Geo <cve@sageby.com>
Reviewed by: Kundan Sable <kundan.sable@enterprisedb.com>
2026-06-08 18:42:40 +05:30
Dave Page bf47924444 fix(llm): reject multi-statement and non-read-only AI assistant queries
The AI Assistant's execute_sql_query tool runs LLM-generated SQL inside
a BEGIN TRANSACTION READ ONLY wrapper. However, the LLM-supplied query
was sent to psycopg as-is, so a multi-statement payload beginning with
COMMIT, END, ROLLBACK, or ABORT terminated the read-only transaction
and ran subsequent statements in autocommit mode. With ordinary write
privileges this allowed unauthorised data modification; for a superuser
or pg_execute_server_program role this chained to remote code execution
on the database host via COPY ... TO PROGRAM.

Validate the LLM-supplied query before any connection work happens:

* The input must parse to exactly one non-empty/non-comment statement.
* The leading real token (after stripping leading whitespace, comments,
  and punctuation) must be one of SELECT, WITH, EXPLAIN, SHOW, VALUES,
  TABLE. Everything else -- DML, DDL, CALL, COPY, DO, SET/RESET, the
  transaction-control verbs, and the rest -- is rejected up front.

PostgreSQL's READ ONLY mode continues to enforce the remaining cases
(data-modifying CTEs, EXPLAIN ANALYZE on writes, volatile side effects)
at runtime, so the validator is the load-bearing check for multi-
statement / top-level escapes and READ ONLY is the backstop for the
rest.

Add a 60-scenario regression suite under
web/pgadmin/llm/tests/test_database_tool_security.py covering the
original PoC payloads (COMMIT/END/ROLLBACK/ABORT/SET/BEGIN), multi-
statement masked by comments, the full allow- and deny-list of leading
keywords, dollar-quoted literals containing semicolons, and degenerate
inputs (empty, whitespace-only, comment-only, quoted identifier).

Reported by: Isaac Chen <isaac9503@gmail.com>
Reviewed by: Kundan Sable <kundan.sable@enterprisedb.com>
2026-06-08 18:42:40 +05:30
Ashesh Vashi 5627944f87 chore(deps): bump JavaScript and Python third-party dependencies (#10023)
Combined fix for 8 packages flagged by GitHub Dependabot (collapsing
6 of them from open dependabot bump PRs and 4 from transitive
vulnerabilities with no existing PR). All eight are transitive — no
direct dep changes — so we override via `resolutions` in web/package.json
and let yarn collapse duplicate-version entries during install.

Resolved (pre → post via resolution):

  Runtime:
    ws                    8.20.0    -> 8.21.0    (patched 8.20.1)

  Dev:
    @xmldom/xmldom        0.7.13    -> 0.8.13    (patched 0.8.13)
    serialize-javascript  6.0.2,
                          7.0.5     -> 7.0.5     (patched 7.0.5)
    ip-address            10.1.0,
                          10.2.0    -> 10.2.0    (patched 10.1.1)
    postcss               8.5.8,
                          8.5.15    -> 8.5.15    (patched 8.5.10)
    qs                    6.15.0    -> 6.15.2    (patched 6.15.2)
    @tootallnate/once     2.0.0     -> 2.0.1     (patched 2.0.1)
    tar (7.x lineage)     7.5.13    -> 7.5.16    (patched 7.5.11)

The tar 6.2.1 lineage (consumed via ^6.1.2/^6.1.11) is unaffected by
these CVEs (alert ranges are 7.x-only), so the resolution is scoped
`tar@npm:^7.5.4` to leave it on 6.2.1.

Supersedes open dependabot PRs #9956 (ws), #9962 (tar), #9966
(@tootallnate/once), and #9974 (qs) — one CI cycle instead of four.

Verification:
- yarn install — clean (only pre-existing peer-dep warnings about
  @mui/system, aspen-core, eve, etc.; no new ones)
- yarn run test:js-once — 824 / 824 pass across 140 test suites
- yarn run bundle:dev — webpack compiled successfully
- All 8 packages confirmed at safe versions via lockfile audit;
  duplicate entries collapsed (yarn.lock net -64 lines)

Out of scope (cannot fix here):
- paramiko (#276 #278): no patched version exists; bump-to-5.0.0
  PRs #9927/#9930 audited 2026-05-20 and deferred to Q4 2026 over
  SSH bastion compat risk
- elliptic (#176): no patched version, dev-only, low severity
- flatted (#224): alert is stale; lockfile already at 3.4.2 (patched);
  will auto-dismiss on next dependabot rescan

* chore(deps): bump Python deps to latest 3.9-compatible

Picks up five Python dependency bumps that are 3.9-safe (still resolve
under Python 3.9 per PyPI requires_python). Four supersede open
dependabot PRs:

- certifi              2026.4.22  -> 2026.5.20
    (no gate; CA bundle refresh; supersedes dependabot #9977 / #9979)

- typer                0.25.*     -> 0.26.*
    (py > 3.9 row only; supersedes dependabot #9995 / #9999)

- testscenarios        0.6.1      -> 0.6.2
    (py > 3.9 row only; supersedes dependabot #9980)

- urllib3              2.6.*      -> 2.7.*  (py > 3.9 row only)
    Picks up two HIGH-severity security fixes in urllib3 2.7.0
    (2026-05-07): GHSA-mf9v-mfxr-j63j (decompression-bomb safeguards
    bypassed under drain_conn / Brotli stream patterns) and
    GHSA-qccp-gfcp-xxvc (ProxyManager.connection_from_url did not
    strip sensitive headers on cross-host redirects). 2.7.0 requires
    Python >=3.10, which the existing 'python_version > 3.9' gate
    already enforces.

- Flask-Security-Too   5.4.*      -> 5.6.* (py <= 3.9 row only)
    Closes a roughly 2-year gap between the 3.9 row (last pin from
    March 2024) and the py > 3.9 row (already on 5.8.*). 5.5/5.6
    only touched flows pgAdmin doesn't use (register V2, MFA / WebAuthn
    templates, username recovery/changing, secret_key rotation) and
    config pgAdmin overrides (default hash bcrypt->argon2 sidestepped
    by SECURITY_PASSWORD_HASH = 'pbkdf2_sha512'). The contract changes
    that mattered (LoginForm.validate -> is_active, UserMixin.is_locked
    hook, single-kwarg find_user) are all already exercised in
    production via the existing FST 5.8.* / Python 3.10+ deployments.
2026-06-08 16:02:43 +05:30
Ashesh Vashi f8e570faea ci: run data-isolation tests in server mode (#10019)
The existing run-python-tests-pg.yml workflow hardcodes
SERVER_MODE = False in config_local.py. Every test that gates
itself on `config.SERVER_MODE` — including the data-isolation
suites — skips itself in CI today. That gap is what allowed the
admin-bypass regression in 9a76ed8 to ship (see #9933, #10006):
the change to web/pgadmin/utils/server_access.py changed
access-control behaviour but the only tests covering it were
server-mode-only and therefore never ran.

This workflow plugs that gap with a narrow, cheap server-mode
CI job:

- Single OS (ubuntu-22.04), single PG version (18) — no matrix
- SERVER_MODE = True in config_local.py
- Runs only the two data-isolation test modules:
    browser.server_groups.tests.test_sg_data_isolation
    browser.server_groups.servers.tests.test_server_data_isolation

Locally with SERVER_MODE=True both modules finish in well under
half a second (3 + 6 tests), so the marginal CI cost is dominated
by the PG/python setup, not the tests themselves.

Future access-control changes to server_access.py (or related
helpers) will fail this workflow if they regress the existing
isolation guarantees, before they reach master
2026-06-08 11:11:12 +05:30
Kevin Bell 92dd7c7962 Fix README typos (#9920) 2026-06-07 18:52:27 +05:30
Murtuza Zabuawala c7d2106462 fix: filtering pg_attribute only by attname can return the wrong attnum if the column name exists in multiple table (#10013) 2026-06-07 18:47:39 +05:30
Murtuza Zabuawala 291a55ec5a chore: Add pg_catalog schema prefix to catalog table queries (#10004) 2026-06-07 12:57:59 +05:30
Dave PageandClaude Opus 4.7 10f99d07e3 chore(regression): remove dead test_advanced_config + Greenplum config gitignore (#9949)
Two related bits of long-stale plumbing in web/regression/:

* test_advanced_config.json.in — the README has told users for years to
  copy this template to test_advance_config.json (no "d") and customise
  it, but a repo-wide grep for either spelling shows zero code, test,
  or CI references. The .in template is dead, and the README/.gitignore
  also disagree about whether the copied filename has a "d" in it,
  which is a typo trap that has gone unnoticed precisely because nobody
  actually performs the copy step.

* test_greenplum_config.json — Greenplum support was removed from
  pgAdmin years ago (only references left in the tree are historical
  release-notes entries from versions 1.4 through 4.12). Nothing reads
  the config any more.

Drop the dead template, prune both stale lines from
web/regression/.gitignore, and simplify the README to describe just
the server-side test_config.json that the framework actually consumes.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-07 12:43:17 +05:30
Ashesh Vashi ed9dcf6ebf chore(deps): bump electron 41.5.0 -> 42.1.0 and pin packaged version (#9959)
Bumps the desktop runtime to electron 42 (dependabot PR #9945) and
closes a supply-chain gap in the Linux/Mac packaging scripts that
predated this bump.

Why the bump is safe:

  - macOS UNNotification API change — pgAdmin's runtime does not use
    Electron's Notification API (only a UI toast comment in
    src/js/pgadmin.js:211; no `new Notification(...)` anywhere).
  - postinstall no longer downloads electron — production packaging
    fetches the binary directly via wget from GitHub releases, never
    via electron's postinstall script.
  - Offscreen rendering scale-factor change — no OSR usage anywhere
    in runtime/src/js/.

While verifying, found that pkg/linux/build-functions.sh and
pkg/mac/build-functions.sh resolve the packaged electron version
via:

    ELECTRON_VERSION="$(npm info electron version)"

This pulls whatever currently carries the `latest` dist-tag on the
npm registry. Any newly published electron release — including a
hypothetical malicious one — would land in shipped binaries without
review, regardless of what runtime/package.json pins.

Replace with sed-based extraction from runtime/package.json and
fail loudly if extraction returns empty. The Windows installer
(pkg/win32/installer.iss.in) does not have this issue (it bundles a
pre-built tree, no electron download step).

Net change in runtime/yarn.lock is mostly deletions — electron 42
ships with @electron/get 5.x, which dropped a large transitive
dependency tree associated with the old postinstall download path.

Verified:

  - eslint (runtime): clean (silent)
  - yarn install (runtime): resolved to electron 42.2.0 within
    ^42.1.0 range
  - sed extraction smoke-tested: returns 42.1.0 from current
    runtime/package.json
2026-06-07 12:08:56 +05:30
Ashesh Vashi 148705994d fix: remove admin bypass from server access helpers (#9933) (#10006)
In server mode, administrators were auto-granted visibility into every
user's private server groups and servers via four _is_admin() bypasses
in server_access.py. This made the Object Explorer show a separate
top-level "Servers" entry per user when logged in as admin, exposing
private connections the admin should have no access to.

The Administrator role in pgAdmin governs management of pgAdmin itself
(users, preferences) — it is not intended to inherit other users'
database credentials and connection state. Cross-user visibility
requires explicit sharing (Server.shared=True), same as for any user.

Remove the admin bypass from get_server, get_server_group,
get_server_groups_for_user, and get_user_server_query. Drop the now-
unused _is_admin() helper. Update docstrings to make the policy
explicit.

Add a regression test (admin attempts to fetch a non-admin user's
private server group → expect HTTP 410). The original isolation test
only covered non-admin → admin, which is why the regression
introduced by 9a76ed8 was not caught.
2026-06-06 09:10:59 +05:30
hiteshjambhale 679c39f944 fix: resolve E501 pycodestyle line-too-long in llm tools database module (#10003) 2026-06-05 12:25:04 +05:30
Dave Page 2dc9d71d02 fix(webpack): alias react-checkbox-tree to its ESM bundle (#9989)
react-checkbox-tree v2 marks the package as "type": "module" but its
"require" exports condition still points at a UMD bundle. babel-loader
turns our ESM imports into require() calls, so webpack picks the UMD
file and treats it as ESM (because of "type": "module"). The UMD
wrapper's module.exports = factory(...) never runs in that context, and
the default export ends up undefined - causing CheckBoxTree to render
"Element type is invalid" in dialogs like Import/Export Servers.

Alias react-checkbox-tree to its ESM bundle (lib/index.esm.js, exposed
by the package's own "./*": "./*" exports map) so webpack picks the file
that actually has a default export.

Closes #9972
2026-06-05 09:57:09 +05:30
Jaspar Martin 27406b5627 fix: fixed invalid '| None' syntax for python 3.9 (#9993) 2026-06-05 09:55:48 +05:30
Domenico Sgarbossa 5c494ecbf6 Fix (#9917)
* Updated Italian translation for v9.15
2026-06-05 09:55:07 +05:30
Ashesh Vashi 0d11dbc173 fix(docker): make CAP_NET_BIND_SERVICE optional for restricted runtimes (#9985)
The container previously applied CAP_NET_BIND_SERVICE to the python
interpreter so the non-root pgadmin user could bind to ports 80/443.
Some platforms refuse to honor file capabilities:

  - --cap-drop=ALL / OpenShift restricted-v2 SCC zero the bounding set,
    so the kernel returns EPERM on exec of any capability-tagged binary.
    This makes the image fail to start (issue #9657).
  - --security-opt=no-new-privileges / allowPrivilegeEscalation: false
    causes the kernel to silently strip file capabilities on exec, so
    the binary runs but a subsequent bind() to <1024 still fails.

Split the interpreter so neither default behavior nor restricted-runtime
support has to give up the other:

  - Dockerfile copies python3.X to /usr/local/bin/python3-cap and applies
    setcap to the copy. /usr/local/bin/python3.X stays un-capped, so
    /venv/bin/python3 (which symlinks to it) execs cleanly under
    restricted SCCs. A parallel /venv/bin/python3-cap symlink keeps the
    venv activation working when the capped interpreter is used.
  - entrypoint.sh reads /proc/self/status at startup. If NoNewPrivs is
    set, or CAP_NET_BIND_SERVICE is missing from the bounding set,
    gunicorn is invoked through the un-capped python and (when
    PGADMIN_LISTEN_PORT is unset) the default port falls back to 8080
    for plain HTTP or 8443 for TLS. A startup message records the
    choice.
  - Existing deployments with the default 80/443 mapping are unaffected:
    on every unrestricted runtime the bounding set still contains
    NET_BIND_SERVICE and gunicorn runs through the capped interpreter
    exactly as before.
  - PGADMIN_LISTEN_PORT, if set, is honored in both paths.

Docs gain a "Restricted Security Contexts" subsection covering the new
auto-detected fallback and the OpenShift / --cap-drop=ALL invocation.

Fixes #9657
2026-05-28 19:31:55 +05:30
Ashesh Vashi 533aed122f build(mac): drop webpack heap from 6 GB to 4 GB on the macOS build (#9968)
The 6 GB ceiling set by #9967 was too aggressive for the macOS x64
VM's total RAM. Build #1295 on `pgabf-macos-x64` failed in
`_build_runtime` at `unzip electron-vX.X.X-darwin-x64.zip` with exit
code 2 — never even reached webpack. That points at OS-level memory
pressure spilling out of the Node process and starving the rest of
the build: at 6 GB reserved, the box runs out of RAM long before
Terser actually needs the full ceiling.

Drop back to 4 GB, which still gives Terser a full extra gigabyte
beyond the original 3 GB setting that OOM-killed webpack in #1294,
but leaves enough headroom for the other steps in the appbundle
build to coexist.

Only the macOS appbundle path changes (see pkg/mac/build-functions.sh);
linux/pip/Makefile and dev-machine builds keep the 3 GB the `bundle`
npm script ships with.
2026-05-22 15:00:09 +05:30
Ashesh Vashi 3e1921dcd9 build(mac): bump webpack heap to 6 GB on the macOS appbundle build (#9967)
macOS x64 appbundle builds keep dying inside webpack's TerserPlugin at
92% (asset processing). Build #1294 on `pgabf-macos-x64` reached
`<s> [webpack.Progress] 92% [0] sealing asset processing TerserPlugin`
and was killed without producing a V8 fatal-error preamble, which
points at the OS reaping the Node process under memory pressure rather
than V8 hitting its own heap ceiling.

TerserPlugin is already running single-threaded (see
web/webpack.config.js, `parallel: false`), so we can't claw memory back
by reducing parallelism. Bump the V8 old-space ceiling from 3072 MB to
6144 MB inside the macOS appbundle build only — the helper in
pkg/mac/build-functions.sh bypasses `yarn run bundle` and calls
`yarn run webpacker` directly (see commit d96e8634), so this knob is
independent of the npm script and does not affect linux/pip/Makefile
or dev-machine builds. They keep the 3 GB the `bundle` script has been
shipping with for years.

If this still doesn't get the x64 box past Terser we'll switch the
minimiser to esbuild via terser-webpack-plugin's `minify` option; that
is a larger and more invasive change so we are trying the cheap fix
first.
2026-05-22 14:43:58 +05:30
Ashesh Vashi d96e86345e build(mac): split bundle step and capture stderr for diagnostics (#9965)
The macOS x64 appbundle build can fail inside `yarn run bundle` while
producing zero console output -- the Jenkins log goes straight from
"yarn install ... Done with warnings" to the EXIT trap's failure
message, leaving no signal as to whether linter, webpack, or a native
module load was the culprit (build #1293 on pgabf-macos-x64 is the
prompting example).

Split the bundled script into its constituent steps and merge stderr
into stdout so any error text reaches the console even if Jenkins'
shell step drops a tail buffer:

  yarn install
  yarn run git:hash    # cheap source-hash capture, moved up front
  yarn run linter
  yarn run webpacker

`git:hash` is a pure `git log` redirect (see web/package.json) with no
node-module dependency, but `yarn run` needs node_modules so it stays
after install. Pulling it before the heavy steps means the commit_hash
file lands on disk even if webpack later bails out.

Env vars NODE_ENV=production and NODE_OPTIONS=--max-old-space-size=3072
are set explicitly to mirror the cross-env wrapper inside the top-level
"bundle" npm script, so build output stays byte-identical to before.

No-op for successful builds; pure diagnostics win on failure.
2026-05-22 13:58:06 +05:30
Ashesh Vashi ae6dc4ba18 fix(test): stabilize bgprocess polling in backup/restore/IE/maintenance tests (#9958)
The shared polling helpers in:

  - web/pgadmin/tools/backup/tests/test_backup_utils.py
  - web/pgadmin/tools/import_export/tests/test_import_export_utils.py
  - web/pgadmin/tools/maintenance/tests/test_create_maintenance_job.py
  - web/pgadmin/tools/restore/tests/test_create_restore_job.py

all share the same race that surfaced on macos-latest / pg16 in
PR #9955's CI run:

  - Wait budget was 2.5s (5 iterations x 0.5s; maintenance used 5s).
  - The break condition was `execution_time' in the_process`, but
    `execution_time` is the elapsed time of a *running* bgprocess --
    it is set before the wrapped pg_dump / pg_restore / psql / COPY
    actually finishes. The completion signal is `exit_code` becoming
    non-None.
  - So the helper could return control while the wrapped command was
    still running, and the next assertion -- e.g.
    `assert_equal(the_process['exit_code'] in [0, 1], True)` -- would
    fire on `None in [0, 1]`, i.e. `False != True`.

Some scenarios masked the bug by listing `None` in their
`expected_exit_code` set (a tell that someone noticed the polling was
unreliable and worked around it by widening accepted exit codes).
Scenarios that didn't include `None` were the ones that flaked.

Fix all four helpers identically:

  - Poll for up to 60 iterations x 0.5s = 30s, generous enough for
    the slowest CI runner.
  - Break only when `the_process.get('exit_code') is not None`, the
    actual completion signal.
  - Narrow `except Exception` to `except StopIteration`, which is the
    only thing `next(...)` here can raise.

No call-site changes needed; the helper contract (returns once the
job is done; raises if the bgprocess never finished) is unchanged in
spirit and strictly more reliable in practice.

Verified:

  - pycodestyle on the four files: 0 violations.

This fixes the failure observed in the macos-latest / pg16 leg of
PR #9955's CI run (run 26154521710, job 76930277702), which was
unrelated to that PR's lockfile-only changes.
2026-05-20 18:58:32 +05:30
Ashesh Vashi 25f0d853c8 chore(deps): bump cryptography 47.0.* -> 48.0.* (#9960)
Supersedes dependabot #9926 (and its /web/regression duplicate
#9932). Inherited via `-r ../../requirements.txt`, so the single
edit covers both.

cryptography 48 is a smaller bump than its major-version label
suggests:

  - Removed Python 3.8 support. pgAdmin requires Python 3.9+ across
    the supported platforms, so this is a no-op for us. (3.9.0 and
    3.9.1 specifically are excluded by the new metadata; nothing
    in pgAdmin's CI / packaging runs those exact patch versions.)
  - Stricter X.509 CRL parsing: a CRL whose inner
    `TBSCertList.signature` does not match the outer
    `signatureAlgorithm` now raises `ValueError` instead of
    being parsed and rejected later during signature verification.
  - Added ML-KEM and ML-DSA post-quantum primitives (additive).

pgAdmin's cryptography surface area is narrow and CRL-free:

  - web/pgadmin/settings/__init__.py        Fernet
  - web/pgadmin/utils/session.py            Fernet, hashes, HKDF
  - web/pgadmin/utils/crypto.py             Cipher, AES, CFB8

No imports of `cryptography.x509`, `CertificateRevocationList`,
or `load_pem_x509_crl` anywhere in the tree, so the stricter CRL
parsing in 48 cannot affect pgAdmin.

The OpenSSL 1.1.x / LibreSSL < 4.1 removal that I initially
flagged as a concern actually happened in cryptography 47, which
master is already on. No platform-support regression from this
bump.
2026-05-20 18:57:44 +05:30
Murtuza Zabuawala 142a55b864 Feat: Added a option to colorize panel/tab header based on server color #2431 (#9799) 2026-05-20 18:56:02 +05:30
Ashesh Vashi 3b801fc6ba chore(deps): bump transitive lockfile resolutions surfaced by dependabot (#9955)
Pure lockfile-only updates — no package.json changes. Dependabot
surfaced these as separate PRs because they sit below pgAdmin's
direct deps in the resolution tree, so the manifest-level bumps
applied in #9954 did not pull them along.

web/yarn.lock:
- @babel/plugin-transform-modules-systemjs 7.29.0 -> 7.29.4 (#9923)
- devalue                                  5.7.0  -> 5.8.1  (#9937)
- fast-uri                                 3.1.0  -> 3.1.2  (#9922)
- svelte                                   5.55.1 -> 5.55.8 (#9938)
  (5.55.8 supersedes the 5.55.7 dependabot was tracking when the PR
   opened; both are within the same ^5.0.0 range.)

runtime/yarn.lock:
- fast-uri                                 3.1.0  -> 3.1.2  (#9924)

All resolutions stay within their existing semver ranges declared by
the parent packages — no manifest constraints touched. Refreshed via
`yarn up -R <pkg>` in each workspace.
2026-05-20 17:22:35 +05:30
Ashesh Vashi aad2dfd725 chore: Apply non-breaking dependency updates from open dependabot PRs (#9954)
Python:
- requirements.txt: google-auth-oauthlib 1.3.1 -> 1.4.0
  (#9929 / #9931), gated so Python 3.9 stays on 1.3.1 (1.4.0
  requires python_version >= 3.10). Mirrors the existing
  boto3 1.42.*/1.43.* split.
- tools/requirements.txt: requests >=2.33.1 -> >=2.34.2 on
  python_version > '3.9' (#9943 / #9944).
- web/regression/requirements.txt: selenium 4.43.0 -> 4.44.0
  (#9946). The selenium pin already requires Python >=3.10 in
  master, so the bump introduces no new 3.9 gap.

JavaScript (web/package.json, web/yarn.lock):
- postcss 8.5.12 -> 8.5.14 (#9874 / #9889)
- @tanstack/react-query 5.100.5 -> 5.100.9 (#9878)
- ip-address 10.1.0 -> 10.1.1 (#9918)
- packageManager pin yarn@4.14.0 -> yarn@4.15.0 and regenerate
  yarn.lock at lockfile __metadata.version 10. CI runs yarn
  4.15.0 with hardened mode on public PRs and refuses to migrate
  the lockfile from version 9 (yarn 4.14.x) to 10; master passes
  today only because hardened mode is PR-only.

Electron runtime (runtime/package.json, runtime/yarn.lock):
- axios 1.16.0 -> 1.16.1 (#9948)
- eslint 10.3.0 -> 10.4.0 (#9947)

Skipped (genuine breaking changes, deferred to follow-up PRs):
- @mui/material 7 -> 9 (#9843)
- @mui/x-date-pickers 8 -> 9 (#9888)
- cryptography 47.0.* -> 48.0.* (#9926 / #9932)
- paramiko 3.5.1 -> 5.0.0 (#9927 / #9930)
- electron 41.5.0 -> 42.1.0 (#9945)

Verified in an isolated worktree:

  - jest:        140/0/0 suites, 824/0/0 tests
  - eslint:      clean (web + runtime, both silent)
  - pycodestyle: 0 violations project-wide

Each version was cross-checked against the corresponding
dependabot PR diff via `gh pr diff`. Each Python bump was
cross-checked against PyPI's requires_python so Python 3.9
support stays intact.
2026-05-20 14:53:04 +05:30
Dave Page af888027a4 fix(docker): ship libpq-oauth-18.so and libcurl for PostgreSQL 18 OAuth (#9952)
libpq 18 dlopens libpq-oauth-18.so (the SASL OAUTHBEARER flow plugin)
when connecting to a server with an `oauth` pg_hba.conf rule. The
container previously copied only libpq.so.5.18 from postgres:18-alpine
and omitted both the plugin and its libcurl runtime dependency, so
OAuth connections failed with "no OAuth flows are available (try
installing the libpq-oauth package)" before any token exchange could
begin.

Add libpq-oauth-18.so to the existing pg18-builder COPY (it sits next
to libpq.so.5.18 in /usr/local/lib in postgres:18-alpine) and install
the libcurl apk package so the plugin can dlopen libcurl.so.4 at
runtime.

Closes #9951
2026-05-20 12:39:42 +05:30
Ashesh Vashi 86a8b165ab fix(test): mock does_utility_exist in maintenance accept-valid tests
MaintenanceInputValidationAcceptsValidTest asserted batch_process_mock
was called, but the route short-circuits with success=0 (HTTP 200)
when does_utility_exist() returns a missing-binary error. On Windows
CI psql.exe is not at the path pgAdmin probes, so BatchProcess was
never reached and the five 'accepted' scenarios failed with
'AssertionError: False is not true'. Stub does_utility_exist to None
in this test so it focuses on input-validation acceptance, not on the
runtime PostgreSQL binary layout.
2026-05-06 15:03:18 +05:30
Ashesh Vashi bdbca57332 docs: note Python 3.9 boto3 split in v9.15 release notes
Annotate the boto3 1.42 -> 1.43 dependency line to reflect that 1.43
requires Python >=3.10, so 3.9 stays on the 1.42.* series.
2026-05-06 12:46:58 +05:30
Ashesh Vashi dda6d0e3a8 fix(deps): pin boto3 to 1.42.* on Python 3.9
boto3 1.43.0 requires Python >=3.10, which breaks installs on Python
3.9. Add a python_version gate so 3.9 stays on the 1.42.x series (the
last to support 3.9) while newer interpreters track 1.43.*.
2026-05-06 12:43:59 +05:30
Ashesh Vashi 411d718fa7 docs: add v9.15 release notes to toctree
Sphinx ran with -W (warnings as errors) and failed both build-docs and
build-python-package CI jobs because release_notes_9_15.rst was not
referenced from any toctree.
2026-05-06 12:03:29 +05:30
Ashesh Vashi d17616eda8 docs: round out v9.15 release notes with stragglers
Adds entries for items that landed after the release notes were first
written:

  - Housekeeping: #9906 (Italian translation update, merged from
    origin/master).
  - Test-suite stability: 208541cc4 (ImportExportServersTestCase
    sys.executable + subprocess error surfacing).
  - Documentation (new subsection): 9923eefca (clarification that
    MAX_LOGIN_ATTEMPTS applies only to INTERNAL auth; LDAP / OAuth2 /
    Kerberos / Webserver brute-force protection is the upstream IdP's
    and reverse-proxy's responsibility).
  - Dependencies (new subsection): the cumulative non-breaking
    dependabot updates aggregated for v9.15, organized by Python /
    JavaScript (web/) / JavaScript (runtime/), listing the
    package-level diffs without commit-keyed framing. Covers both
    aggregating commits (d55ffe405 and 4330a688a) so a reader looking
    for "what versions did 9.15 ship with" finds it in one place.

Sphinx build remains clean for release_notes_9_15.rst.
2026-05-05 19:33:16 +05:30
Ashesh Vashi c6a6d46283 Updated version for release v9.15 2026-05-05 19:07:40 +05:30
Ashesh Vashi 4330a688aa chore: Apply non-breaking dependency updates from open dependabot PRs
Python (requirements.txt):
- boto3 1.42.* -> 1.43.* (#9908)
- psycopg 3.3.3 -> 3.3.4 (#9911) for python_version >= '3.10'

JavaScript (web/package.json, web/yarn.lock):
- axios 1.15.2 -> 1.16.0 (matches dependabot's #9907 in /runtime,
  applied to /web for cross-package consistency)

Electron runtime (runtime/package.json, runtime/yarn.lock):
- axios 1.15.2 -> 1.16.0 (#9907)
- electron 41.3.0 -> 41.5.0 (#9910)
- eslint 10.2.1 -> 10.3.0 (#9912)
- globals 17.5.0 -> 17.6.0 (#9909)
  follow-redirects 1.15.11 -> 1.16.0 transitively

Skipped (genuine breaking changes, deferred to a future minor):
- @mui/material 7 -> 9 (#9843)
- @mui/x-date-pickers 8 -> 9 (#9888)

Verified in an isolated worktree:

  - jest:                140/0/0 suites, 824/0/0 tests
  - eslint:              clean (silent)
  - pycodestyle:         0 violations project-wide
  - python regression:   1879/0/308 (PG18, --exclude feature_tests)

The axios 1.16.0 release notes call out three observable changes; only
the first is potentially relevant to pgAdmin and is a bugfix:

  - Fetch adapter now enforces maxBodyLength / maxContentLength (these
    were silently ignored on the fetch adapter before 1.16.0). pgAdmin
    does not set these limits, so behaviour is unchanged.
  - Proxy requests preserve user-supplied Host headers — pgAdmin does
    not proxy through axios.
  - Basic-auth credentials embedded in URLs are URL-decoded — pgAdmin
    does not construct credential-embedded URLs.

psycopg 3.3.4 brings three bugfixes: spurious connection-timeout in C
extension on long-uptime systems, client-side adaptation of enums whose
names need quoting, and consistent Cursor.statusmessage after
executemany().

electron 41.5.0 is a patch within the 41.x line carrying Chromium
security backports plus a Windows frameless-window resize regression
fix and a low-level mouse-hook teardown fix.
2026-05-05 18:47:55 +05:30
Ashesh Vashi 96e6528243 Merge remote-tracking branch 'origin/master' into cve-9.15 2026-05-05 16:22:33 +05:30
Ashesh Vashi ba9ff51aaa docs: assign CVE IDs to v9.15 release-notes placeholders
Replaces the "(CVE pending)" markers on the seven placeholder issues
with their assigned identifiers:

  #9830 -> CVE-2026-7813   (cross-user data access / shared-server escalation)
  #9865 -> CVE-2026-7814   (stored XSS via crafted PostgreSQL object names)
  #9898 -> CVE-2026-7815   (SQL injection in Maintenance tool option values)
  #9899 -> CVE-2026-7816   (OS command injection in Import/Export query export)
  #9900 -> CVE-2026-7817   (LFI/SSRF in LLM API configuration endpoints)
  #9901 -> CVE-2026-7818   (unsafe deserialization in session manager)
  #9902 -> CVE-2026-7819   (symlink path traversal in file manager)
  #9904 -> CVE-2026-7820   (account-lockout bypass via Flask-Security /login)

#9835 is a follow-up to #9830 and shares CVE-2026-7813, so its
parenthetical is dropped rather than replaced with a separate ID.

To be revealed publicly when this branch is pushed for the 9.15 release.
2026-05-05 16:14:02 +05:30
Domenico Sgarbossa 4eb899c92c Updated Italian translation for v9.15 (#9906) 2026-05-05 16:07:08 +05:30
Ashesh Vashi 6469b69565 style: fix pre-existing pycodestyle violations across CVE-9.15 test files
24 violations had accumulated on the cve-9.15 branch from the #9901 and
#9902 CVE-fix work and a couple of older spots. Surfaced when the full
suite was run after the #9904 work; no functional change.

  - 22 x E501 (line too long > 79):
      - 15 in pgadmin/misc/file_manager/tests/test_filemanager_security.py
        (13 class declarations using two mixin parents,
        2 docstrings)
      - 6  in pgadmin/utils/tests/test_session_file_format.py
        (5 class declarations, 1 docstring)
      - 1  in pgadmin/browser/tests/test_kerberos_with_mocking.py
        (extracted self.app.url_map._rules_by_endpoint into a local
        before the membership test)
  - 2  x E305 (expected 2 blank lines after class/function):
      - pgadmin/misc/file_manager/__init__.py (after _open_upload_target)
      - pgadmin/browser/__init__.py (after _first_form_error)

Class declarations are wrapped via parenthesised continuation, the
standard pgAdmin convention; docstrings are either shortened or wrapped
across two lines preserving the same meaning. Verified:

  - pycodestyle clean project-wide (24 -> 0).
  - Affected tests still pass: test_filemanager_security 17/0/0,
    test_session_file_format 18/0/0, test_kerberos_with_mocking 2/0/3
    (skips are pre-existing and unrelated -- Kerberos blueprint not
    loaded in default config).
2026-05-05 15:03:00 +05:30
Ashesh Vashi 208541cc48 fix: ImportExportServersTestCase uses sys.executable + surfaces subprocess errors
Two latent bugs in pgadmin/setup/tests/test_export_import_servers.py
caused this test to fail on macOS / modern Linux distros:

1. The test invoked the subprocesses with a hardcoded "python" via
   os.system. macOS and many modern Linux distros do not provide a
   "python" alias — only "python3" or a venv-specific binary. The
   subprocess fails with "sh: python: command not found", exits non-
   zero, and writes nothing to the dump-servers output file.

   Same root cause that a50a553b0 ("chore: feature tests use
   sys.executable") fixed for AppStarter; this is the same fix in the
   regression test.

2. Both os.system calls redirected stderr to /dev/null. When the
   subprocess failed the empty output file then tripped json.loads
   with the misleading "Expecting value: line 1 column 1 (char 0)"
   instead of surfacing the underlying "command not found" error.

Switch to subprocess.run with a list (so there is no shell quoting and
no command-injection surface), use sys.executable, capture stderr, and
self.fail() with the captured stderr if the subprocess exits non-zero.

Verified: setup.tests goes from 4 pass / 1 fail / 1 skip to 5 pass / 0
fail / 1 skip on PG18.
2026-05-05 15:03:00 +05:30
Ashesh Vashi 9923eefcab docs: clarify scope of MAX_LOGIN_ATTEMPTS and document brute-force protection for LDAP
The "Avoiding a bruteforce attack" section in login.rst implied that
MAX_LOGIN_ATTEMPTS protected all logins; in fact it only applies to the
INTERNAL authentication source (the /authenticate/login view filters by
auth_source=INTERNAL). Operators using LDAP / OAUTH2 / KERBEROS /
WEBSERVER got no signal that brute-force protection lives at a different
layer.

Adds:

  - login.rst: the bruteforce section now states that MAX_LOGIN_ATTEMPTS
    is INTERNAL-only and points operators of external sources to the
    upstream identity provider's lockout policy and to the reverse proxy
    for IP-based throttling.
  - ldap.rst: a new "Brute-force protection" section calling out that
    LDAP credential lockout is the directory's responsibility (ppolicy /
    AD account-lockout GPO) and that request rate-limiting belongs on
    the proxy. Cross-references the login-page section.

No code change. Closes the documentation gap that surfaced during the
analysis of the #9904 lockout-bypass fix without inheriting the
maintenance burden of duplicating directory lockout in pgAdmin.
2026-05-05 15:03:00 +05:30
Ashesh Vashi 32d194691e docs: add release-notes line for #9904 lockout-bypass fix
Mirrors the CVE-pending entries for #9898-#9902 with reporter credit.
The detailed CVE record (CVSS, description, affected files) is held in
the local docs/CVEs/ working draft and submitted to MITRE/Vulnogram
externally; only the release-notes summary lands in git pre-disclosure.
2026-05-05 15:03:00 +05:30
Ashesh Vashi d336c1e786 fix: enforce account lockout on Flask-Security's /login endpoint (#9904)
pgAdmin enforces MAX_LOGIN_ATTEMPTS only inside its own /authenticate/login
view. Flask-Security's default /login view (registered automatically by
security.init_app) was reachable but never consulted the locked field:

  - User inherited Flask-Security's UserMixin.is_locked(), which always
    returns True (= "not locked, proceed").
  - User inherited Flask-Login's is_active, which only checks the active
    column, not locked.

So an attacker with valid credentials could bypass a lockout by posting
to /login after triggering the counter at /authenticate/login.

Override both contracts on the User model so every auth path inherits
them:

  - is_active: False when active=False OR locked=True, so
    flask_security.login_user() refuses to mint a session.
  - is_locked(form_error): returns False (= "locked") and appends the
    same "Your account is locked" message /authenticate/login uses, so
    LoginForm.validate() rejects the submission cleanly.

Only INTERNAL accounts are reachable by the bypass (LDAP/OAuth2/Kerberos/
Webserver users have no local password, which LoginForm.validate rejects
before the locked check) and lockout itself is internal-only (auth_source
filter at authenticate/__init__.py:124), so the overrides only take
effect for INTERNAL accounts.

Adds a unit test covering the four (active, locked) combinations of the
contract LoginForm.validate() depends on.

Also includes a SQLite-only data-cleanup migration. Migration 6650c52670c2
added the locked column with server_default='false'. SQLite has no native
BOOLEAN affinity, so the literal 'false' was stored as TEXT both in the
column DEFAULT and on existing rows backfilled by ALTER TABLE.
SQLAlchemy's Boolean processor then reads that TEXT back as Python True
(because bool('false') is True for any non-empty string), which means
the new is_active override would otherwise see every legacy row as
locked and refuse login. The new migration normalize_locked_text_default
rewrites every SQLite row's locked to integer 0/1 (NULL -> 0); on a
PostgreSQL config DB the column was always stored as a proper BOOLEAN
so the migration is a no-op there (and integer literals would fail
on a BOOLEAN column anyway). SCHEMA_VERSION is bumped from 51 to 52.

Reported-by: Fernando Bortotti <fernando.bortotti@bsd.com.br>
2026-05-05 15:00:19 +05:30
Ashesh Vashi 7f230d05fa docs: add release notes for v9.15
Drafts the user-facing release notes for the 9.15 release. Covers all
47 non-merge commits since REL-9_14:

- 18 issue-linked entries under New features / Housekeeping / Bug fixes,
  with reporter credits (names only) for the six external CVE reports
- #9901 absorbs 14 follow-up commits (session encryption + 0o600,
  SHA-256 digest, drop of live AuthSourceManager / cloud provider
  instances, DATA_DIR perms, log file mode, log handler hardening,
  user_info_server prompt-loop bound) via "Also..."
- #9830 absorbs the @with_object_filters extension to ServerNode.list
- 14 commits without an associated GitHub issue listed under
  "Additional changes" (bug fixes / test stability / refactoring /
  housekeeping) for transparency

CVE IDs are placeholders ("CVE pending") and will be filled in once
MITRE assigns them. Release date and bundled-utility version are
also placeholders pending the actual release.
2026-05-02 12:59:54 +05:30
Ashesh Vashi fcb3db7f54 Merge remote-tracking branch 'origin/master' into cve-9.15 2026-05-02 12:12:20 +05:30
Ashesh Vashi 2f211dc04c Updated message catalogs for v9.15 2026-05-02 12:11:32 +05:30
Ashesh Vashi a11d289bd9 test: harden click_modal backdrop wait and open_query_tool stale-element retry
click_modal: wait up to 5s for the MuiDialog-backdrop to become
invisible after clicking the modal button. MUI v7 leaves the backdrop
in the DOM during the ~300ms close animation, which intercepts the
next click in tests that chain modal->modal interactions.

open_query_tool: the execute-query toolbar button can re-render between
the visibility wait and the ActionChains.move_to_element call
(Firefox/geckodriver hits this regularly). Retry the move up to 3
times on StaleElementReferenceException, refetching the element each
attempt rather than reusing a stale handle.

Both changes are pure test-side stability fixes; no production code
or behavior is affected.
2026-05-02 12:10:51 +05:30
Ashesh Vashi a50a553b0a chore: feature tests use sys.executable; sync yarn.lock to package.json
1. AppStarter.start_app() spawned the pgAdmin subprocess with bare
   "python" via subprocess.Popen. macOS (and many modern Linux
   distros) do not provide a "python" symlink — only "python3" or a
   venv-specific binary. The result was an Errno 2 "No such file or
   directory" the moment a feature test tried to launch pgAdmin.

   Switch to sys.executable so the spawned pgAdmin uses the same
   interpreter and venv as the test runner. Works regardless of how
   the venv is named or whether "python" is on PATH.

2. yarn.lock churn from `yarn install` resolving the @tanstack /
   moment-timezone / postcss peer-dep ranges. Snapshot the resolved
   versions for reproducibility (post the dependency bumps in
   d55ffe405).
2026-05-02 11:02:30 +05:30
Ashesh Vashi e7eaef0dc0 Merge remote-tracking branch 'origin/master' into cve-9.15 2026-05-02 11:00:24 +05:30
Ashesh Vashi 849c679fc6 Updated message catalog post merging few translations 2026-05-02 10:59:22 +05:30
rx500 f43c781e98 Update messages.po (es) (#9893)
Word translation corrected.
2026-05-02 10:56:59 +05:30
Daniel Nylander 119a99375d Update Swedish translation. (#9764)
- Database terminology corrections (bord → tabell, Visa → Vy, etc.)
- Standardize Tabellrymd, Sammansatt utlösare
- Fix punctuation in placeholder lists (Oxford-comma alignment)
- Drop incorrect fuzzy flag from .po header

Note: msgid "on" (from ai_tools.js) is missing here because the PR's
.po was regenerated against a slightly older source tree; it will be
re-added on the next `make messages` run.
2026-05-02 10:53:37 +05:30
MichalBartos ff0fc9e7eb Fix translation for 'Refresh' in Czech (#9832) 2026-05-02 10:37:12 +05:30
Degit22 aec3ea117f Update Russian translation. (#9839) 2026-05-02 10:19:18 +05:30
Ashesh Vashi ddc371adf7 fix: bound user_info_server prompt loops + allow .local in deliverability test
Two related issues, both surfaced when running the regression suite
non-interactively:

1. user_info_server()'s while-not-validate retry loops had no upper
   bound. With a mocked or closed stdin (test mocks, EOF in CI/cron,
   typo'd PGADMIN_SETUP_EMAIL=''), the loop would call input()/pprompt()
   forever, printing 'Invalid email address. Please try again.' on
   every iteration. We saw this manifest as a 13.5 million-line
   25 GB log when test_no_email_deliverability hit the case.

   Cap each loop at MAX_PROMPT_ATTEMPTS=5 and raise RuntimeError with a
   pointer to PGADMIN_SETUP_EMAIL/PASSWORD env vars on exhaustion.

2. test_no_email_deliverability included pg@postgres.local in its
   "should be accepted with deliverability=False" data set. The .local
   suffix is in email_validator.SPECIAL_USE_DOMAIN_NAMES which fails
   syntactic validation regardless of the deliverability flag, so
   validate_email always rejected it - looping forever pre-fix #1.

   Set config.ALLOW_SPECIAL_EMAIL_DOMAINS = ['local'] in the test's
   try/finally block so .local is allowed for this scenario, restored
   afterward to avoid leaking state into other tests.

With both fixes in place, the test can be removed from the regression
runtests --exclude list.
2026-05-02 01:52:29 +05:30
Ashesh Vashi 0fad04de85 fix: PSQL socket tests use authenticated tester; role-deps test skips on auth failure
Two test-infra issues exposed by the full regression suite:

1. PSQL socket tests (test_backend_task, test_psql_input,
   test_resize_terminal, test_socket_disconnect, test_start_process)
   created a fresh, unauthenticated app.test_client() and built a
   socketio test client around it. The /pty connect handler is
   wrapped with @socket_login_required, so the unauthenticated client
   was rejected and is_connected('/pty') returned False.

   Switch to the authenticated self.tester from BaseTestGenerator so
   the connect handler accepts the connection. Matches the pattern
   already used by BaseSocketTestGenerator (test_socket_connect,
   test_psql_disabled).

2. test_role_dependencies_sql creates a temporary LOGIN role and
   calls create_table as that role. On clusters where pg_hba.conf
   does not allow arbitrary roles to connect from 127.0.0.1, the
   create_table swallows the connection error via try/except and
   the subsequent pg_class lookup returns no row, surfacing as an
   opaque "NoneType is not subscriptable" error.

   Detect the empty fetchone() and skipTest with a clear message
   pointing at pg_hba.conf so the test fails gracefully on
   environmentally-restricted clusters instead of erroring.
2026-05-02 01:39:00 +05:30
Ashesh Vashi 1f7194924f fix: harden 6 regression tests against environmental drift
Tests that worked on legacy CI envs but failed under newer
email_validator / non-postgres-named superuser / no-app-context
on tearDown / etc.:

1. test_import_export_create_job_unit_test.py - E-string scenario
   was labelled "Rejected: ... (false positive, safe)" expecting
   parser over-rejection. The parser actually correctly identifies
   the query as balanced (close paren is inside the literal). Update
   expected to True and rename scenario to reflect the real
   handling.

2. test_sg_data_isolation.py - tearDown does ORM query/delete after
   the @create_user_wise_test_client wrapper has popped the test
   client/context. Wrap tearDown's ORM ops in an explicit
   app_context().

3. test_validate_user_email.py - the "with deliverability" scenario
   used postgres@local.dev expecting rejection. Newer email_validator
   no longer rejects this. Switch to postgres@nonexistent.invalid,
   which is RFC-reserved and rejected regardless of DNS state. Also
   align expected message with the actual format string used by
   validate_user.

4-5. test_grant_wizard_save_permissions.py and
   test_grant_wizard_get_sql.py - test data hardcoded 'postgres' /
   'enterprisedb' as grantee/grantor. On clusters where the
   superuser is named differently (e.g. dev Homebrew installs use
   the local OS account), the GRANT statement fails with
   "role X does not exist". Use self.server['username'] instead.

6. test_role_dependencies_sql.py - the test creates a fresh LOGIN
   role and tries to CREATE TABLE as that role; without explicit
   CREATE-on-database grant, the create silently fails and the
   subsequent pg_class lookup returns no row. Mark the test role
   SUPERUSER so it can create the table.

All are test-infra fixes; none of the production code paths under
test were modified.
2026-05-02 01:29:01 +05:30
Ashesh Vashi d78a7cc3bf fix: ConnectionLocker session safety + batch_process tests need request context
Two related issues that surfaced in BatchProcessTest:

1. ConnectionLocker.__enter__ accessed Flask session (via 'in' check)
   AFTER acquiring the lock. When called outside a request context,
   session access raises RuntimeError. Python's 'with' semantics skip
   __exit__ if __enter__ raises, so the lock leaked - any subsequent
   call to ConnectionLocker hung forever waiting on a lock that
   would never be released.

   Wrap session access in try/except RuntimeError so missing-request-
   context falls through cleanly and the lock is released normally
   on with-block exit. Also use .get() chains so partial session
   shapes do not raise KeyError.

2. The four batch_process unit tests (backup, import_export,
   maintenance, restore) used app_context() instead of
   test_request_context(). flask-babel's gettext() in
   BackupMessage.details() and similar code paths require a request
   context; ConnectionLocker.__enter__ also touches session as above.
   Switching to test_request_context('/') gives both the request
   binding they need.

Verified: tools.backup.tests.test_batch_process now runs 4/4 passing
(was 3 ERROR + 1 hang before fix #1; 3 FAIL before fix #2).

Both are pre-existing issues exposed by Python 3.14 / flask 3.1 /
flask-babel stricter context enforcement; not introduced by 9.15
CVE work.
2026-05-02 01:10:33 +05:30
Ashesh Vashi 657529280e fix: guard session['auth_source_manager'] access in BatchProcess.start
processes.py:322 unconditionally indexed session['auth_source_manager']
to gate the KRB5CCNAME copy. When the Flask session does not have the
auth_source_manager key (test request contexts that bypass the login
flow, or sessions whose login hasn't populated this key yet), the
indexing raises KeyError, aborting BatchProcess.start() before it ever
spawns the subprocess. The error has no obvious traceback in the
runtests harness because it bubbles up through BackupCreateJob's mock
infrastructure - the test just records ERROR with no message.

Replace [...] with .get(...) chains so a missing auth_source_manager
yields None and the Kerberos branch is skipped, matching the original
intent.

Surfaced by BatchProcessTest "When backup server" / "When backup
globals" scenarios which mock current_user but leave session in its
default unauthenticated state. Same shape on master; the fix is a
one-line robustness improvement.
2026-05-02 00:54:48 +05:30
Ashesh Vashi d55ffe405b fix: Apply non-breaking dependency updates from open dependabot PRs
Python (requirements.txt, tools/, web/regression/):
- cryptography 46.0 -> 47.0 (move CFB8 import to decrepit module to
  silence the 47.0 deprecation warning and survive 49.0 removal)
- typer 0.24 -> 0.25 for python>3.9 (drop removed [all] extra)
- safety >=1.9.0 -> >=3.7.0 (CI audit tool)
- requests >=2.21.0 -> >=2.33.1
- testtools 2.8.7 -> 2.9.1
- pycodestyle >=2.5.0 -> >=2.14.0

JavaScript (web/package.json, web/yarn.lock):
- postcss 8.5.6 -> 8.5.12
- moment-timezone 0.6.0 -> 0.6.2
- @tanstack/react-query 5.90 -> 5.100.5

Skipped (genuine breaking changes): @mui/material 7->9 (#9843),
@mui/x-date-pickers 8->9 (#9888).
2026-05-02 00:18:47 +05:30
Ashesh Vashi 4eb184739a fix: replace 'e.message' with str(e) and add @with_object_filters to ServerNode.list
Two pre-existing master bugs surfaced by the data-isolation regression
tests:

1. 'e.message' on caught exceptions (13 sites). Exception.message was
   removed in Python 3 (it lived on BaseException in Py2). When the
   except handler runs, accessing e.message raises AttributeError,
   masking the original exception. Werkzeug HTTPException doesn't
   expose .message either - it uses .description / .__str__.

   Replace 'e.message' with str(e) across:
   - browser/server_groups/__init__.py (delete/update/create handlers)
   - browser/server_groups/servers/__init__.py (5 handlers)
   - browser/server_groups/servers/databases/__init__.py
   - misc/cloud/__init__.py
   - tools/debugger/__init__.py
   - tools/grant_wizard/__init__.py (2 sites)

   Sites guarded by hasattr(e, 'message') first (psycopg3 driver) are
   left as-is; module.messages dict access (utils/__init__) is also
   unrelated.

2. ServerNode.list() missing @with_object_filters decorator. PR #8917
   (99b822e47) added object_filters as a required positional arg to
   list() but only added the @with_object_filters decorator to
   get_nodes(), leaving list() with a signature the Flask routing
   couldn't satisfy. Surfaced by SharedServersGetTestCase 'Get a all
   shared server' test, which calls the list endpoint directly.
2026-05-01 23:57:57 +05:30
Ashesh Vashi d57acce354 fix: harden validation/preference/connection-params paths against pre-existing edge cases
Five small defensive fixes that were exposed by running the full
regression suite end-to-end:

1. utils/validation_utils.py: validate_email() now returns False
   instead of raising TypeError when passed a non-str/bytes value
   (e.g. None from a missing form field). Matches the wrapper's
   contract that it only ever returns bool.

2. tools/user_management/__init__.py: list endpoint guarded against
   users with no roles. u.roles[0].id -> u.roles[0].id if u.roles
   else None. Triggered by ChangePasswordTestCase fixtures.

3. utils/preferences.py: control_props['tags'] / ['creatable']
   replaced with .get(...) so preferences whose control_props omit
   these keys do not raise KeyError on update.

4. browser/server_groups/servers/__init__.py (create endpoint):
   convert_connection_parameter() is bidirectional (list<->dict).
   The save path always wants the storage shape (dict). When input
   is already a dict (internal callers / tests mimicking storage
   form), skip conversion to avoid the dict->list round-trip that
   breaks the MutableDict column. Same fix applied to the workspaces
   save path.

5. misc/workspaces/__init__.py: same defensive handling for
   convert_connection_parameter() on the save path.

These are all pre-existing master bugs surfaced by edge-case test
data; none are introduced by the 9.15 CVE work.
2026-05-01 23:29:43 +05:30
Ashesh Vashi dc61039e93 fix: quote username in views/mview test helper for dotted local roles
Same dot-username bug as 504775de8 / 9b29bc203 but in a different shape:
view_test_data.json query strings are Python expressions interpolating
server['username'] into ALTER TABLE ... OWNER TO and GRANT ... TO
clauses. views/tests/utils.py:create_view evaluates these expressions,
producing SQL with an unquoted identifier. A local PG role with a dot
(e.g. 'ashesh.vashi') was rejected with 'syntax error at or near "."'.

Substitute server['username'] with Driver.qtIdent(None, server['username'])
in the query template before evaluating, so the resulting SQL contains
the properly-quoted identifier. The substitution covers every
occurrence in the template (some queries have OWNER TO and GRANT TO in
the same string).

Accounts for the remaining 72 'syntax error at or near "."' cases that
504775de8 + 9b29bc203 did not reach.
2026-05-01 23:09:09 +05:30
Ashesh Vashi 9b29bc2033 fix: quote username in types/compound_triggers test helpers for dotted local roles
Two more test setUp helpers had the same dot-username bug as
user_mappings (504775de8): server['username'] was substituted into
the OWNER TO clause unquoted, so a local PG role with a dot (e.g.
'ashesh.vashi') was rejected with 'syntax error at or near "."'.

- types/tests/utils.py - 'ALTER TYPE ... OWNER TO %s' now uses
  Driver.qtIdent() for the username.
- compound_triggers/tests/utils.py - sql_query template substitution
  now passes the qtIdent-quoted username.

Same Driver.qtIdent(None, server['username']) approach as in 504775de8.
2026-05-01 23:00:48 +05:30
Ashesh Vashi 504775de80 fix: quote username in user_mappings test helper for dotted local roles
The setUp helper in user_mappings/tests/utils.py interpolated
server['username'] directly into the CREATE USER MAPPING DDL, so a
local PostgreSQL role containing a dot (e.g. 'ashesh.vashi') was
parsed by PG as a schema-qualified identifier and rejected with
'syntax error at or near "."'. This blocked every test whose setUp
created a user mapping (UserMappingGetSQLTestCase, etc.).

Wrap the FOR target with Driver.qtIdent() so the identifier is
double-quoted when it contains special characters. Mirrors the
approach used by the resql framework's _normalize_owner() / <OWNER>
substitution introduced in d112dc3b9 - that fix covered SQL
expectation comparison; this fix covers test setUp DDL generation,
which the resql logic does not reach.

The OPTIONS user/password are left as raw '%s' since they are SQL
string literals (single-quoted), where dots are syntactically safe.

Verified: 33/33 user_mappings tests pass; zero 'syntax error at or
near "."' occurrences in the targeted run.
2026-05-01 22:54:09 +05:30
Ashesh Vashi 044355c5e0 fix: harden EnhancedRotatingFileHandler._open and add regression tests
Found by aggressive review of 83abb1c4f:

1. fd leak on os.fdopen failure — os.open returns a raw fd; if
   os.fdopen() raises after, the fd is orphaned. Wrap in try/except
   and close on failure. Built-in open() doesn't have this issue
   because it manages the fd internally.

2. Silent regression of close-on-exec — Python's built-in open() sets
   fds non-inheritable by default since PEP 446 (3.4+). os.open()
   does not. Replacing the default open path therefore made the log
   fd inheritable across fork/exec — mostly harmless in pgAdmin's
   subprocess paths (they default close_fds=True) but still a
   silent behavioral diff. OR in O_CLOEXEC to match.

Also adds web/pgadmin/utils/tests/test_enhanced_log_rotation.py
covering: new file mode, rotated archive + new active file mode,
pre-existing file mode unchanged, and fd non-inheritable. Skipped on
Windows where POSIX mode bits and PEP 446 semantics differ. Verified
all 4 cases pass via web/regression/runtests.py --pkg utils.
2026-05-01 16:38:49 +05:30
Ashesh Vashi 85366aa128 fix: create pgadmin4.log with mode 0o600
Override EnhancedRotatingFileHandler._open() so the active log file
and rotated backups are created owner-only on POSIX. The parent
DATA_DIR is already 0o700, so this is defense-in-depth — but the
log file can contain sensitive context (auth events, query
fragments, paths) and should not be world/group readable on its own.

Pre-existing log files keep their current permissions; new installs
and rotated files pick up the tighter mode. Windows uses the default
open path since os.open mode is ignored there.
2026-05-01 16:38:49 +05:30
Ashesh Vashi 6f4f28def7 refactor: factor wtforms-error-to-JSON into helper, drop dead import
Two endpoints (change_password, forgot_password) had previously been
patched ad-hoc to handle wtforms validators that emit Babel
LazyString (LazyProxy) error messages — those instances report as
iterable, so json.dumps fails with "Circular reference detected" if
they reach the encoder. Both fixes lived inline with slightly
different shapes and a shared trap waiting to bite the next caller.

Extract `_first_form_error_message(form, default=None)`: walks
form.errors, force-resolves the first LazyString to plain str, returns
the default when the form has no errors. Use it from both endpoints.

Also drop the now-dead `from flask_security.views import
default_render_json` import — the only callsite in browser/__init__.py
was replaced when that function's signature drifted; the import was
left behind.

No behavior change beyond consolidating the two ad-hoc patterns; both
endpoint test suites still pass.
2026-05-01 16:38:49 +05:30
Ashesh Vashi fb9ce563fb fix: tighten DATA_DIR file/dir permissions at creation
Two related hardening changes around the pgAdmin data directory:

1. Atomic 0o600 for pgadmin4.db
   ----------------------------
   pgadmin/__init__.py:run_migration_for_sqlite() and
   setup.py:setup_db()'s run_migration_for_sqlite() previously chmod'd
   pgadmin4.db to 0o600 *after* SQLAlchemy/SQLite created it via
   db_upgrade(). With a typical 0o022 umask, the file existed at 0o644
   between SQLite's create and pgAdmin's chmod — a TOCTOU window.
   Practically narrow because the parent dir is 0o700, but easy to
   close: wrap the migration call in `os.umask(0o077)` so the file is
   born 0o600. Both code paths use try/finally so the prior umask is
   restored even on migration failure (a raise during db_upgrade no
   longer leaves the rest of the worker running with 0o077 in effect).
   The post-hoc chmod is kept as belt-and-suspenders for the case where
   the file already existed at a wider mode from an older install.

2. 0o700 for sensitive DATA_DIR subdirectories
   --------------------------------------------
   setup/data_directory.py previously chmod'd only SESSION_DB_PATH and
   the parent dir of SQLITE_PATH to 0o700. STORAGE_DIR (user uploads
   including saved cloud-deployment certs/keys), AZURE_CREDENTIAL_CACHE
   _DIR (MSAL token cache files — real Azure credentials), KERBEROS_
   CCACHE_DIR (Kerberos credential caches), and the directory holding
   pgadmin4.log (stack traces frequently capture sensitive context)
   were left at umask-default (typically 0o755 — directory listing
   readable by any local user).

   Refactor the create-loop to track which directories were newly
   created on this invocation, then apply chmod 0o700 uniformly to all
   sensitive dirs at once. Errors (e.g., chmod on a mounted volume in
   OpenShift) emit a WARNING but don't abort — same lenient pattern the
   existing SQLITE_PATH-dir chmod already used.

   pgadmin4.log itself is still 0o644 (umask-default) because Python's
   logging.FileHandler doesn't take a mode argument; tracked as a
   follow-up task to subclass the handler.
2026-05-01 16:38:49 +05:30
Ashesh Vashi 3b36dd3964 fix: encrypt session-file body (Fernet) for confidentiality at rest
The session file contains OAuth access/refresh tokens, AWS / Google /
Azure / BigAnimal cloud credentials, the Kerberos cache path, MFA OTP
material, and pass_enc_key — the symmetric KEK that decrypts the user's
saved Postgres server passwords. The HMAC header introduced earlier in
this branch protects integrity but not confidentiality: a leak of
sessions/<sid> alone exposes every secret in plaintext.

Wrap the pickle body in Fernet (AES-128-CBC + HMAC-SHA256, AEAD) before
the on-disk HMAC computation — encrypt-then-MAC, so pickle.loads is
unreachable on the read path until both the file HMAC verifies and
Fernet authenticates the ciphertext.

File format becomes:

    +----------------------------------------------------------+
    | _HMAC_HEX_LEN bytes : hex HMAC over the ciphertext      |
    +----------------------------------------------------------+
    | N bytes : Fernet(pickle((randval, digest, data)))       |
    +----------------------------------------------------------+

Fernet key is derived from SECRET_KEY via HKDF-SHA256 with a fixed,
versioned salt and info string (`pga-session-body-v1`,
`pgadmin session body encryption v1`) so multiple workers produce the
same key deterministically and a future format swap can derive a fresh
key without reusing bytes already in flight on disk.

Caveat (not theoretical): SECRET_KEY currently lives in pgadmin4.db in
the same DATA_DIR. A leak that includes BOTH sessions/ AND pgadmin4.db
recovers the derived Fernet key and decrypts session bodies. Closing
that gap requires moving SECRET_KEY out of DATA_DIR (e.g., into the OS
keychain via USE_OS_SECRET_STORAGE) — tracked as a Layer-2 follow-up.

Backwards compat: pre-Layer-1 session files (HMAC over plain pickle, no
Fernet) pass the HMAC check but raise InvalidToken on Fernet.decrypt.
That's caught and logged as "legacy unencrypted body"; users see a
one-time re-login on upgrade. (The same upgrade also flips
SESSION_DIGEST_METHOD's default from sha1 to sha256 and changes the
file format, so the re-login is unavoidable regardless.)

Three new tests:

* TestSessionBodyIsEncryptedOnDisk: place a sentinel in the session,
  read raw bytes, assert the sentinel does NOT appear on disk.
* TestSessionBodyRejectedWithDifferentSecret: write under SECRET_KEY=A,
  read under SECRET_KEY=B, confirm rejection (rules out hard-coded-key
  bugs).
* TestLegacyHmacOnlyFileRejected: pre-Layer-1 file is rejected with the
  expected "legacy unencrypted body" log message.

Pre-existing tests that built bodies directly (TestCorruptedHmacHeader,
TestCookieHmacMismatchWithValidFile) updated to wrap the body via the
new make_encrypted_body() helper so they exercise the realistic file
shape.
2026-05-01 16:38:49 +05:30
Ashesh Vashi bee80fe943 fix: write session files with mode 0o600 (was umask-default 0644)
$DATA_DIR/sessions/<sid> contains OAuth access_tokens / refresh_tokens
(via session['oauth2_token']), AWS / Google / Azure / BigAnimal cloud
credentials (via the cloud refactors earlier in this branch), the
Kerberos credential cache path, MFA OTP material, and pass_enc_key —
the symmetric KEK that decrypts the user's saved Postgres server
passwords.

The HMAC header added earlier in this branch protects integrity but
not confidentiality: anyone with read access to the file gets the
secrets. Default `open(path, 'wb')` uses the process umask, which on
typical systems leaves files 0o644 (world-readable). Switch
new_session() and put() to a new _open_session_file() helper that
opens with `os.open(... O_WRONLY | O_CREAT | O_TRUNC, 0o600)`, mirroring
the upload helper introduced in PR 1.

The directory itself is already 0o700, so this is defense-in-depth for
container scenarios where the data volume might be mounted under shared
uids, or for misconfigurations of the directory mode.

NB: Existing session files retain their old mode until next write, then
adopt 0o600. Operators who want to forcibly tighten existing files can
chmod the sessions directory recursively post-upgrade.

Adds a positive test asserting both put() and new_session() produce
0o600 files (skipped on Windows where POSIX mode bits are not
meaningful).
2026-05-01 16:38:49 +05:30
Ashesh Vashi ccfbd2c457 fix: SESSION_DIGEST_METHOD default to sha256, follow-up review polish
Default SESSION_DIGEST_METHOD from hashlib.sha1 to hashlib.sha256.
HMAC-SHA1 is still cryptographically acceptable for the cookie's
(sid, randval) signature, but SHA-256 is the modern default and aligns
with the file-HMAC header introduced earlier in this branch. The session
file format already invalidates all existing sessions on upgrade (the
new HMAC header is required), so flipping this default at the same time
is a free hardening rather than an additional break.

Test polish from the post-merge hostile review:

* Tighten the "no unsafe deserializer imported" assertion in the four
  cloud-module test files (RDS, Google, BigAnimal, Azure) to a regex
  anchored at line start with a word boundary, so it catches
  `from pickle import dumps, loads`, `import pickle as p`, and indented
  imports — not just bare `import pickle`.

* test_login.py: drop a sid-rotation assertion that would have given
  false confidence. Flask-Paranoid does NOT rotate the session id on
  login (it binds a `_paranoid_token` to UA+IP and validates per
  request), so an `assertNotEqual(pre_sid, post_sid)` would always fail
  for the wrong reason. Comment the limitation in the test for the next
  reviewer; stronger fixation testing is owed as a follow-up.

* docs/proposals: spec line numbers in §4.2 had drifted ~10 lines from
  the implemented branch (helper extraction, etc.); refresh them and
  the audit-summary table to point at HEAD-of-branch lines. Append a
  §1.6 entry enumerating the residual `pickle.loads` callsites in
  sqleditor / schema_diff / bgprocess that PR 7 / Phase 2 will close,
  so future reviewers see the surface.
2026-05-01 16:38:49 +05:30
Ashesh Vashi 1518b0828d fix: SERVER_MODE python-test path and two endpoint regressions
CI runs the python test suite with SERVER_MODE=False (DESKTOP) which
explicitly skips OAuth2 / LDAP / Kerberos / change-password / forgot-
password tests via runtime guards. Running the suite with
SERVER_MODE=True surfaced two real pgAdmin endpoint regressions and a
batch of stale test fixtures that this commit addresses.

Test-infra fixes (regression/python_test_utils/csrf_test_client.py):

* fetch_csrf was looking for <input id="csrf_token" ...> which the
  React SPA login no longer renders. The token is exposed as
  "csrfToken": "..." in a JSON config block embedded in /login HTML
  (camelCase) and as "csrf_token": "..." in JSON API responses
  (snake_case). Match both, fall back to the legacy hidden-input form.

* login() captured the CSRF from GET /login, but Flask-Paranoid
  regenerates the session on login (anti-fixation), which drops the
  csrf_token from the new session. Subsequent state-changing API calls
  failed with "The CSRF session token is missing." Refresh the token
  from a post-login GET /browser/ when SERVER_MODE is True.

Endpoint regressions (web/pgadmin/browser/__init__.py):

* change_password JSON path: bad_request(list(form.errors.values())[0][0])
  passed a Babel LazyString (LazyProxy) to the JSON encoder, producing
  500 with "Circular reference detected." Force resolution to plain
  str.

* forgot_password JSON path: default_render_json(form, include_user=
  False) used a Flask-Security API that no longer accepts include_user,
  yielding 500 on every JSON POST. Replace with pgAdmin's standard
  make_json_response/bad_request envelope.

Test-fixture maintenance:

* test_change_password.py / browser/tests/utils.py: send JSON to the
  JSON-only change_password endpoint (was sending form data, which the
  endpoint silently ignored); use DELETE /user_management/save/<id>
  for cleanup; update respdata strings to match current pgAdmin output.

* test_login.py, test_gravatar_image_display.py,
  test_ldap_with_mocking.py, test_kerberos_with_mocking.py,
  test_webserver_with_mocking.py: drop the
  'Gravatar image for X' assertion (server-rendered HTML no longer
  exists; React renders the gravatar client-side) and verify successful
  authentication via session._user_id instead.

* test_ldap_login.py: skip when LDAP config is template placeholders
  (no live LDAP server reachable in dev/CI).

* test_kerberos_with_mocking.py: skip when authenticate.kerberos_login
  is not registered (the blueprint loads only when KERBEROS is in
  AUTHENTICATION_SOURCES at app-init time).

* test_reset_password.py: switch to JSON POST against the JSON-only
  forgot_password endpoint; parametrize expected status; drop HTML
  pre-check.

* test_validate_email.py: drop pg@postgres.local (modern email-
  validator rejects RFC 6761 special-use TLDs); switch deliverability
  scenario to .invalid/.test domains for stable DNS.

Net result: 296 tests pass, 0 failures, 12 skipped (LDAP/Kerberos
require infra; 1 pgcrypto scenario; cloud-wizard real-credential
tests).
2026-05-01 16:38:49 +05:30
Ashesh Vashi 93206710f7 fix: drop live Azure instance from session, persist auth state only
The azure cloud-deployment module wrote a live Azure class instance
directly into session['azure']['azure_obj'] (no pickle.dumps -- it
relied on the session backend to serialize anything). That is an
implicit pickle dependency: any session-format change would crash, and
the live class instance carries Azure SDK credential objects with
mutable state.

Add Azure.to_state()/from_state() that round-trip the persistable
fields (tenant_id, session_token, use_interactive_credential,
authentication_record_json, region, subscription_id, availability_zone,
available_capabilities_list, azure_cache_name, azure_cache_location)
through a plain dict. Live SDK objects (_clients, _credentials,
_cli_credentials) are intentionally NOT in to_state -- they're rebuilt
lazily from authentication_record_json on first credential use.

from_state bypasses __init__ (which references current_user.username)
via cls.__new__(cls) so unit tests work without a Flask login context.

Module-level _get_azure_from_session()/_save_azure_to_session() helpers
replace the 18 session['azure']['azure_obj'] sites across 12 endpoints.

Worker-restart UX trade-off: today's behavior pickles the populated
Azure SDK client cache, surviving a worker recycle. After this change
the in-memory cache is gone on restart, but the persisted
authentication_record_json is sufficient for the SDK to silently rebuild
the credential without re-prompting for device code -- the class was
designed for this replay. Verification owed in PR review.

Seven new tests cover: round-trip of persistable fields, helper from
session state, lazy SDK objects after from_state, missing-session
graceful return, defaults for partial state, regression assertion that
no live instance leaks into 'azure_obj', and that the unsafe
deserializer is not used.
2026-05-01 16:38:49 +05:30
Ashesh Vashi 2b0d44a33f fix: drop pickled BigAnimal provider instance from session
The biganimal cloud-deployment module pickled the live BigAnimalProvider
across 15 sites (verify, polling-for-token, projects, providers,
regions, db_types, db_versions, instance_types, volume_types,
volume_properties, deploy). Same pattern, same risk as the other
cloud providers.

Add BigAnimalProvider.to_state()/from_state() and
_get_biganimal_from_session()/_save_biganimal_to_session() helpers.
from_state uses cls.__new__(cls) to bypass __init__'s
get_auth_provider() HTTP call -- the persisted `provider` dict already
holds that data.

Five new tests cover: round-trip preservation, helper construction,
defaults for partial state, missing-session graceful return, and a
regression assertion that pickle is gone.
2026-05-01 16:38:49 +05:30
Ashesh Vashi fffc3cc242 fix: drop pickled Google cloud instance from session
The google cloud-deployment module persisted the live Google class via
pickle.dumps/pickle.loads across 14 sites: the verify_credentials
handler, the OAuth2 callback, and every region/zone/version/instance-
type lookup. Each call paid a pickle round-trip and re-introduced the
deserialization risk inside session storage.

Add Google.to_state()/Google.from_state() that round-trip the
persistable fields (client_config, credentials_json, redirect_url,
project_id, regions, availability_zones, verification flags) through
a plain dict, and rebuild the google.oauth2.credentials.Credentials
SDK object lazily from credentials_json. Module-level
_get_google_from_session() / _save_google_to_session() helpers replace
the per-site pickle dance.

Six new tests cover: round-trip of all persistable fields, credential
rebuild from token dict, helper construction from session state,
helper returning None for missing/empty session, defaults for partial
state, and a regression assertion that pickle is gone from the module.
2026-05-01 16:38:48 +05:30
Ashesh Vashi adbb249604 fix: drop pickled RDS instance from session
verify_credentials previously stored pickle.dumps(rds, -1) under
session['aws']['aws_rds_obj']; subsequent endpoints unpickled it via
pickle.loads. That pickle round-trip was an in-session deserialization
vector and forced the session storage to carry binary blobs.

The RDS class is a thin wrapper over boto3 clients: all of its mutable
state is the credential dict already saved at session['aws']['secret'].
Drop the pickled blob and reconstruct RDS per request via a new
_get_rds_from_session() helper. boto3 client construction is cheap
(microseconds) and clients are cached on the per-request instance.

Also fixes a pre-existing latent bug in verify_credentials where status
was undefined when the cached creds matched the new ones (only the
inside of the cache-miss branch assigned it), now explicitly set to
True for the cache-hit path.

Five new tests cover: full creds, missing session_token, no aws key,
no secret key, and a regression assertion that the cloud.rds module
no longer imports the unsafe deserializer.
2026-05-01 16:38:48 +05:30
Ashesh Vashi 64a232bc85 fix: drop live AuthSourceManager from session, store provider name only
The OAuth2 login redirect flow stashed the live AuthSourceManager
instance in flask.session via session['auth_obj'] = auth_obj, requiring
the session storage to handle arbitrary Python objects. That coupled the
auth flow to the pickle-backed session format and presented a second-
order deserialization vector if any path could influence session
contents.

The only piece of state that genuinely needs to cross the OAuth2
provider redirect is the provider name. Persist that as
session['oauth2_current_client'] (a plain str) and reconstruct a fresh
AuthSourceManager in oauth_authorize from current_app's auth-source
registry. The OAuth2 source's per-instance oauth2_current_client is
restored before login() so client selection still works on the callback.

Defensive: oauth_authorize now redirects with a flash error when the
session-state key is missing (e.g., session expired between login and
callback), instead of KeyError'ing.

Two new scenarios in test_oauth2_with_mocking.py verify (a) post-redirect
session contains the new minimal state and not a live class instance,
and (b) the callback handles missing provider state without 500.
2026-05-01 16:38:48 +05:30
Ashesh Vashi 435752b83c fix: symlink-based path traversal in file_manager (CWE-61/CWE-22) (#9902)
CWE-61 / CWE-22 in file_manager: check_access_permission used
os.path.abspath, which resolves '..' but not symbolic links, while
the subsequent kernel write follows symlinks. An authenticated user
could plant a symlink inside their storage area pointing outside it
and write to any path the pgAdmin process could reach.

Fix: switch to os.path.realpath for both orig_path and in_dir, and
add a new _open_upload_target helper that opens with O_NOFOLLOW
(and mode 0o600) to close the leaf-component TOCTOU between the
access check and the open. Drops the redundant post-write
check_access_permission call in add().

Mode change for uploaded files (0o644 -> 0o600) is intentional
hardening; release notes will call this out.

Tests: 16 file-manager security tests covering realpath enforcement
on all five access-check consumers and O_NOFOLLOW leaf-symlink
rejection.

The shared design proposal lives in docs/proposals/ and was added
in the preceding pickle-RCE commit.

Reported-by: Fernando Bortotti <fernando.bortotti@bsd.com.br>
2026-05-01 16:38:48 +05:30
Ashesh Vashi 30a8903374 fix: pickle deserialization RCE in session manager (CWE-502) (#9901)
CWE-502 in FileBackedSessionManager.get(): pickle.load was called on
the session file before the HMAC integrity check. Any file dropped
in the sessions directory was deserialized unconditionally, allowing
an authenticated user with sessions-dir write access to achieve
OS-level RCE.

Fix: prepend a 64-byte hex SHA-256 HMAC header over the pickle body,
computed with the SECRET_KEY, and verify it via hmac.compare_digest
before any deserialization. Also raises (not asserts) on empty
SECRET_KEY so -O does not strip the check, and narrows the
post-deserialize except clause to surface programming errors instead
of masking them.

Tests: 13 new session-format tests covering round-trip, malicious-
pickle rejection, header tampering, empty/truncated files,
cookie-HMAC mismatch, unsafe sids, empty SECRET_KEY, MFA-shaped data,
and SERVER_MODE=False direct upload.

Includes docs/proposals/2026-04-30-eliminate-rce-and-symlink-escape.md,
the shared design doc covering this fix and the symlink-traversal fix
in the following commit.

Reported-by: Fernando Bortotti <fernando.bortotti@bsd.com.br>
2026-05-01 16:38:48 +05:30
Ashesh Vashi 24485fe964 fix: prevent LFI and SSRF in LLM API configuration endpoints (#9900)
User-supplied api_key_file and api_url preferences fed pgAdmin's LLM
provider clients without validation. An authenticated user could read
arbitrary server-side files (LFI) or coerce pgAdmin into requesting
internal targets such as 169.254.169.254 (SSRF) via the chat path and
model-list endpoints.

- validate_api_key_path() restricts user-supplied paths to the user's
  private storage directory in server mode (covering both old- and
  new-style names) or the home directory in desktop mode; resolves
  symlinks and rejects null bytes. Shared storage is intentionally
  excluded since API keys are per-user secrets.
- _read_api_key_from_file() caps reads at 1024 bytes and enforces a
  printable-ASCII no-whitespace key shape so it cannot be repurposed
  as an arbitrary file reader.
- validate_api_url() enforces config.ALLOWED_LLM_API_URLS by exact
  scheme://host:port match, applied at refresh endpoints, accessor
  fallbacks, and provider client constructors so the chat path is
  also covered. Logs a startup warning if the allowlist is empty.
- Adds test coverage for path validation, URL validation, refresh-
  endpoint rejection paths, and refresh-endpoint happy paths.

Reported-by: j3seer <jasserchebbi@outlook.com>
2026-05-01 16:38:48 +05:30
Ashesh Vashi 13badc62c3 fix: Prevent OS command injection in Import/Export query export (CWE-78) (#9899)
User-supplied input was interpolated directly into a psql \copy
metacommand template without sanitization. An authenticated pgAdmin
user could inject ") TO PROGRAM 'cmd'" to achieve RCE on the pgAdmin
server, or ") TO '/path'" for arbitrary file write, by breaking out
of the \copy (...) context.

Add _is_query_parens_balanced() which tracks parenthesis depth in the
query, modeled on psql's strtokx tokenizer used by parse_slash_copy.
Only single-quoted strings ('...' with '' and \' escaping) and
double-quoted identifiers ("..." with "" escaping) are recognized;
line/block comments and dollar-quoting are deliberately NOT skipped
because psql's \copy parser does not recognize them either, so any
unbalanced ')' inside those constructs must remain visible to the
validator.

Whitelist-validate format, on_error, and log_verbosity which were
also raw-interpolated, and write the normalized lowercase value back
to data so downstream template equality checks (e.g. data.format ==
'csv') match regardless of input case.

Reject queries containing null bytes (which could cause a C-string
truncation mismatch between Python validation and psql execution)
and normalize \r\n / \r / \n to spaces (required for Windows; also
prevents psql metacommand termination).

Type-check 'query' before string operations so malformed payloads
return a clean 400 instead of a 500. Tighten is_query_export gating
to 'is True' in both update_data_for_import_export and the validation
block so a client cannot exploit a truthy-but-not-True value to
bypass one check while satisfying the other.

Add unit tests covering the parens parser (balanced cases, RCE
attempts, escape edge cases) and route-level tests asserting
BatchProcess is not invoked for malicious payloads.

Reported-by: chungkn (Chung Kim), OneMount Group <kimngocchung.k2a@gmail.com>
2026-05-01 16:38:48 +05:30
Ashesh Vashi cf53953d9a fix: prevent SQL injection in Maintenance tool option values (#9898)
The Maintenance tool concatenated four user-supplied JSON fields
(buffer_usage_limit, vacuum_parallel, vacuum_index_cleanup,
reindex_tablespace) directly into the rendered VACUUM/ANALYZE/REINDEX
command, which was passed to psql --command. An authenticated user
with the tools_maintenance permission could break out of the option
syntax and execute arbitrary SQL on the connected server, escalating
to RCE on the database host via COPY ... TO PROGRAM.

Fix:
- Allow-list values server-side before rendering: vacuum_index_cleanup
  in {AUTO, ON, OFF}; vacuum_parallel a non-negative integer up to
  1024; buffer_usage_limit matching ^\d+\s*(kB|MB|GB|TB)$
  (case-insensitive). Reject with HTTP 400 on failure.
- Switch reindex_tablespace from manual double-quote wrapping to the
  qtIdent filter used elsewhere in the same template, which both
  escapes embedded quotes and only quotes when required.
- Type-guard against unhashable values so non-string payloads return
  400 instead of triggering a 500.

Reported-by: j3seer <jasserchebbi@outlook.com>
2026-05-01 16:38:48 +05:30
Ashesh Vashi d112dc3b96 fix: Fixed the resql tests - use <OWNER> placeholder instead of hardcoded 'postgres' role (#9873)
The reverse-engineered SQL tests hardcoded 'postgres' as the role name
in test JSON data and expected SQL files. This fails on systems where
the superuser is not 'postgres' (e.g. 'ashesh.vashi').

Changes:
- Replace hardcoded 'postgres' with '<OWNER>' placeholder in ~400 test
  JSON, SQL, and MSQL files across all browser module tests
- Extend test_resql.py to resolve '<OWNER>' in scenario data sent to
  API endpoints (not just in expected SQL)
- Handle identifier quoting for usernames containing special characters
  (dots, etc.) by normalizing both expected and actual SQL
- Fix test_domain_sql.py to use qtIdent for username in expected SQL
- Split Authlib version pin: 1.6.x for Python <=3.9, 1.7.x for >3.9
2026-04-24 21:18:38 +05:30
Ashesh Vashi b70d4c9857 fix: Bump runtime and development dependencies (#9870)
Python (requirements.txt):
- Authlib 1.6.9 -> 1.7.0
- Flask-Security-Too 5.7.* -> 5.8.* (py>3.9)
- certifi 2026.2.25 -> 2026.4.22
- Flask-WTF 1.2.* -> 1.3.*

Python test (web/regression/requirements.txt):
- selenium 4.41.0 -> 4.43.0
- testscenarios 0.5.0 -> 0.6.1
- testtools 2.8.7 -> 2.9.0

JavaScript web (web/package.json):
- @mui/material ^7.3.7 -> ^7.3.10
- @mui/x-date-pickers ^8.27.2 -> ^8.28.3
- @mui/icons-material ^7.3.6 -> ^7.3.10
- dompurify ^3.3.3 -> ^3.4.1
- axios ^1.13.5 -> ^1.15.2
- react ^19.2.3 -> ^19.2.5
- react-dom ^19.2.3 -> ^19.2.5
- typescript ^5.9.2 -> ^6.0.3
- marked ^17.0.1 -> ^18.0.2
- react-checkbox-tree ^1.7.2 -> ^2.0.1
- eslint ^9.39.2 -> ^9.39.4
- and ~60 more minor/patch bumps across build, test, and runtime deps

JavaScript runtime (runtime/package.json):
- electron 41.2.0 -> 41.3.0
- axios ^1.15.0 -> ^1.15.2
- eslint ^10.2.0 -> ^10.2.1
- globals ^17.4.0 -> ^17.5.0
2026-04-24 14:28:36 +05:30
Ashesh Vashi 3294e74197 fix: prevent XSS via innerHTML in browser tree and explain visualizer (#9865)
Use textContent instead of innerHTML when setting DOM element text
to prevent stored XSS through crafted PostgreSQL object names.
2026-04-23 14:21:04 +05:30
Aditya Toshniwal 79e490c5fa Updated yarn.lock file to use yarn v4.14.0 and fix the builds 2026-04-17 17:13:19 +05:30
Ashesh Vashi e4edcf2253 fix: SharedServer feature parity columns and write guards (#9835)
Add passexec_cmd, passexec_expiration, kerberos_conn, tags, and
post_connection_sql to SharedServer so non-owners get their own
per-user values instead of inheriting the owner's.  Drop the unused
db_res column which was never overlaid or writable by non-owners.

Key changes:
- New Alembic migration (sharedserver_feature_parity) adds 5 columns,
  drops db_res, cleans up orphaned records.  All operations idempotent.
- Overlay copies new fields from SharedServer instead of suppressing
- _owner_only_fields guard blocks non-owners from setting passexec_cmd,
  passexec_expiration, db_res, db_res_type via API
- Non-owners can set post_connection_sql (runs under their own creds)
- update_tags and flag_modified use sharedserver for non-owners
- update() response returns sharedserver tags for non-owners
- ServerManager passexec suppression with config.SERVER_MODE guard
- UI: post_connection_sql editable for non-owners (readonly only when
  connected, not when shared)
- SCHEMA_VERSION bumped to 51
- Comprehensive unit tests for overlay, write guards, and tag deltas
2026-04-13 15:03:31 +05:30
Ashesh Vashi 4ddb16f47a fix: customize container user permissions using PUID and PGID. #9657 (#9833)
Add support for custom container user permissions via PUID and PGID
environment variables. When the container is started as root
(--user root), the pgadmin user is reassigned to the requested UID/GID
and all initialization runs under that user via su-exec, ensuring
files are created with correct ownership from the start.

Key changes:
- Dockerfile: add su-exec package, add chmod g=u for /run/pgadmin
  (fixes OpenShift random UID access)
- entrypoint.sh: add PUID/PGID validation and privilege dropping
  before initialization (not after), preserving OpenShift compatibility

Three modes supported:
- Default (USER 5050): unchanged behavior
- Custom UID (--user root -e PUID=N -e PGID=N): drops to target user
  before any init
- OpenShift (random UID, GID 0): passwd fixup + group permissions
2026-04-13 14:34:18 +05:30
Ashesh Vashi a3a0537277 fix: Bump runtime dependencies and upgrade ESLint to v10 (#9834)
- electron: 41.0.2 → 41.2.0
- eslint: ^9.39.2 → ^10.2.0
- axios: ^1.13.5 → ^1.15.0
- electron-context-menu: ^4.1.0 → ^4.1.2
- Added @eslint/js and globals as explicit devDependencies (required by ESLint 10)
- Fixed no-useless-assignment lint errors in downloader.js and misc.js
2026-04-09 21:31:17 +05:30
Ashesh Vashi 9a76ed80bb fix: enforce data isolation and harden shared servers in server mode (#9830)
pgAdmin 4 in server mode had no data isolation between users — any
authenticated user could access other users' private servers,
background processes, and debugger state by guessing object IDs.
The shared server feature had 21 vulnerabilities including credential
leaks, privilege escalation via passexec_cmd, and owner data
corruption via SQLAlchemy session mutations.

Centralized access control:
- New server_access.py with get_server(), get_server_group(),
  get_user_server_query() replacing ~20 unfiltered queries
- connection_manager() raises ObjectGone (HTTP 410) in server mode
  when access is denied — fixes 155+ unguarded callers
- UserScopedMixin.for_user() on 10 models replaces scattered
  user_id filters

Shared server isolation (all 21 audit issues):
- Expunge server from session before property merge to prevent
  owner data corruption
- Suppress passexec_cmd, post_connection_sql for non-owners in
  merge, API response, and ServerManager
- Override all 6 SSL/passfile connection_params keys from
  SharedServer; strip owner-only keys; sanitize on creation
- _is_non_owner() helper centralises 15+ inline ownership checks
- SharedServer lookup uses (osid, user_id) not name
- Unique constraint on SharedServer(osid, user_id)
- Tunnel/DB password save, change_password, clear_saved_password,
  clear_sshtunnel_password all branch on ownership
- Only owner can unshare (delete_shared_server guard)
- Session restore includes shared servers
- tunnel_port/tunnel_keep_alive copied from owner, not hardcoded

Tool/module hardening:
- All tool endpoints use get_server()
- Debugger function arguments scoped by user_id
- Background processes use Process.for_user()
- Workspace adhoc servers scoped to current user

Migration (schema version 49 -> 50):
- Add user_id to debugger_function_arguments composite PK
- Add indexes on server, sharedserver, servergroup
- Add unique constraint on sharedserver(osid, user_id)
2026-04-09 18:32:59 +05:30
Ashesh Vashi 872d5ac0b3 fix: Bump python & javascript dependencies (#9827)
* Update Python dependencies:
   - google-auth-oauthlib 1.3.0 → 1.3.1
   - sphinxcontrib-youtube 1.4.1 → 1.5.0
   - fixtures 4.3.1 → 4.3.2
   - Add missing newline at end of requirements files

* Update JavaScript dependencies:
   - Replace deprecated @babel/plugin-proposal-* packages with @babel/plugin-transform-* equivalents
   - Remove unused @types/classnames dependency
   - Update yarn.lock
   - Pin the 'react-frame-component' to '~5.2.6'

* fix: Use PostGIS 36 for EPAS 18 in CI workflow
   - EPAS 18 ships with edb-as18-postgis36 instead of postgis34.
   - Add a postgisver matrix variable to support mixed versions.
   - Add exclude+include for EPAS 18 PostGIS matrix to fix empty runs-on

* Moving '@babel/plugin-transform-class-properties', '@babel/preset-react' to devDependencies section
2026-04-08 17:31:56 +05:30
rztrainlocalandrztrainlocal d59fcf3459 fix(9656): Use absolute paths for a2enmod, a2enconf for debain setup script (#9815)
Reason: On debian, it does not have `/usr/sbin` in the path environment variable anymore.

Co-authored-by: rztrainlocal <ke@KE-U758.HOME>
2026-04-06 21:48:19 +05:30
Akshay Joshi d8a078af53 Updated version for release v9.14 2026-03-30 17:44:32 +05:30
Dave PageandClaude Opus 4.6 9bb96360dd Support /v1/responses for OpenAI models. #9795
* Support /v1/responses for OpenAI models. #9795

* Address CodeRabbit review feedback on OpenAI provider.

- Preserve exception chains with 'raise ... from e' in all
  exception handlers for better debugging tracebacks.
- Use f-string !s conversion instead of str() calls.
- Extract duplicated max_tokens error handling into a shared
  _raise_max_tokens_error() helper method.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Validate api_url and use incomplete_details from Responses API.

- Strip known endpoint suffixes (/chat/completions, /responses) from
  api_url in __init__ to prevent doubled paths if a user provides a
  full endpoint URL instead of a base URL.
- Use incomplete_details.reason from the Responses API to properly
  distinguish between max_output_tokens and content_filter when the
  response status is 'incomplete', in both the non-streaming and
  streaming parsers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 14:16:22 +05:30
Libor M. 2228575564 Czech translation for version 9.14 2026-03-30 12:43:22 +05:30
Khushboo Vashi 5dd0de9e0f Revert "Update JavaScript dependencies."
This reverts commit 92bb092718.
2026-03-30 12:29:48 +05:30
Khushboo Vashi aa3dc389e4 Update Release Notes. 2026-03-27 14:27:15 +05:30
Akshay Joshi 92bb092718 Update JavaScript dependencies. 2026-03-27 13:23:18 +05:30
Anil Sahoo 3598840203 Fixed an issue where ALT+F5 for executing a query in the Query Tool shows a crosshair cursor icon for rectangular selection. #9570 2026-03-27 12:59:35 +05:30
Domenico Sgarbossa 792441ab95 Updated Italian translation for v9.14. 2026-03-27 11:30:59 +05:30
Anil Sahoo 2c626d1181 Fixed Geometry Viewer not auto-updating on first query execution after View/Edit Data to Query Tool promotion. #9392 2026-03-27 11:23:47 +05:30
Pravesh Sharma 278e812293 Fixed an issue where the default fillfactor value for B-tree indexes was incorrect. #9648 2026-03-27 11:20:40 +05:30
Pravesh Sharma 1d51a1a943 Fixed an issue where the Query tool kept prompting for a password when using a shared server. #9789 2026-03-27 11:03:15 +05:30
Dave Page bf649420b7 Fix a couple of related issues in the Query Tool layout.
- Hide the AI Assistant tab if AI is disabled or unconfigured. #9696
- Ensure the AI Assistant tab is not the first one shown.
2026-03-27 11:01:42 +05:30
Anil Sahoo 1c93f93a6a Fixed Python & feature test failures caused by Werkzeug 3.1.7 rejecting empty Host header in CSRF token generation. 2026-03-26 17:59:58 +05:30
Akshay Joshi 3ba887001a Updated message catalogs for v9.14 2026-03-26 17:06:45 +05:30
Akshay Joshi 257654849b Updated Javascript and Python dependencies. 2026-03-17 12:12:00 +05:30
Dave Page d7f462c22c Clarify where the LLM API key files should be. #9758 2026-03-17 11:44:17 +05:30
Dave Page 6296016b67 Fix an issue where LLM responses are not streamed or rendered properly in the AI Assistant. #9734
* Address CodeRabbit review feedback for streaming and SQL extraction.

- Anthropic: preserve separators between text blocks in streaming to
  match _parse_response() behavior.
- Docker: validate that the API URL points to a loopback address to
  constrain the request surface.
- Docker/OpenAI: raise LLMClientError on empty streams instead of
  yielding blank LLMResponse objects, matching non-streaming behavior.
- SQL extraction: strip trailing semicolons before joining blocks to
  avoid double semicolons in output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Address remaining CodeRabbit review feedback for streaming and rendering.

- Use distinct 3-tuple ('complete', text, messages) for completion events
  to avoid ambiguity with ('tool_use', [...]) 2-tuples in chat streaming.
- Pass conversation history from request into chat_with_database_stream()
  so follow-up NLQ turns retain context.
- Add re.IGNORECASE to SQL fence regex for case-insensitive matching.
- Render MarkdownContent as block element instead of span to avoid
  invalid DOM when response contains paragraphs, lists, or tables.
- Keep stop notice as a separate message instead of appending to partial
  markdown, preventing it from being swallowed by open code fences.
- Snapshot streamingIdRef before setMessages in error handler to avoid
  race condition where ref is cleared before React executes the updater.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address CodeRabbit review feedback for streaming providers and history.

- Fix critical NameError: use self._api_url instead of undefined API_URL
  in anthropic and openai streaming _process_stream() methods.
- Match sync path auth handling: conditionally set API key headers in
  streaming paths for both anthropic and openai providers.
- Remove unconditional temperature from openai streaming payload to
  match sync path compatibility approach.
- Add URL scheme validation to OllamaClient.__init__ to prevent unsafe
  local/resource access via non-http schemes.
- Guard ollama streaming finalizer: raise error when stream drops
  without a done frame and no content was received.
- Update chat.py type hint and docstring for 3-tuple completion event.
- Serialize and return filtered conversation history in the complete
  SSE event so the client can round-trip it on follow-up turns.
- Store and send conversation history from NLQChatPanel, clear on
  conversation reset.
- Fix JSON-fallback SQL render path: clear content when SQL was
  extracted without fenced blocks so ChatMessage uses sql-only renderer.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix missing closing brace in NLQChatPanel switch statement.

Adding block scoping to the error case introduced an unmatched brace
that prevented the switch statement from closing properly, causing
an eslint parse error.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix missing compaction module and SQL extraction test.

- Replace compaction module imports with inline history deserialization
  and filtering since compaction.py is on a different branch.
- Add rstrip(';') to SQL extraction test to match production code,
  fixing double-semicolon assertion failure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix SQL extraction test expected values after rstrip(';') change.

The rstrip(';') applied to each block before joining means single
blocks and the last block in multi-block joins no longer have
trailing semicolons. Update expected values to match.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Strictly guard Ollama stream: raise if no terminal done frame received.

Truncated content from a dropped connection should not be treated as
a complete response, even if partial text was streamed. Always raise
when final_data is None, matching CodeRabbit's recommendation.
2026-03-17 11:41:57 +05:30
Akshay Joshi e3472103bb Updated release note. 2026-03-16 19:20:18 +05:30
Dave Page 990b4f5e54 Fix an issue where the AI Assistant was not retaining conversation context between messages, with chat history compaction to manage token budgets.
* Address CodeRabbit review feedback for chat context and compaction.

- Track tool-use turns as groups instead of one-to-one pairs, so
  multi-tool assistant messages don't leave orphaned results.
- Add fallback to shrink the recent window when protected messages
  alone exceed the token budget, preventing compaction no-ops.
- Fix low-value test fixtures to keep transient messages short so
  they actually classify as low-importance.
- Guard Clear button against in-flight stream race conditions by
  adding a clearedRef flag and cancelling active streams.
- Assert that conversation history is actually passed through to
  chat_with_database in the "With History" test.

* Address remaining CodeRabbit review feedback for compaction module.

- Expand protected set to cover full tool groups, preventing orphaned
  tool call/result messages when a turn straddles the recent window.
- Add input validation in deserialize_history() for non-list/non-dict data.
- Strengthen test assertion for preserved recent window tail.


* Fix CI test failures in compaction and NLQ chat tests.

- Lower max_tokens budget in test_drops_low_value to reliably force
  compaction (500 was borderline, use 200).
- Consume SSE response data before asserting mock calls in NLQ chat
  test, since Flask's streaming generator only executes on iteration.


* Clarify mock patch target in NLQ chat test.

Add comment explaining why we patch the source module rather than the
use site: the endpoint uses a local import inside the function body,
so there is no module-level binding to patch.
2026-03-16 19:02:36 +05:30
Rohit Bhati 74b1a3bcc4 Fixed Process Watcher garbled text on Windows with non-UTF-8 locales. #9457 2026-03-16 19:00:41 +05:30
Anil Sahoo 01c2d12b51 Fixed an issue where selecting all in the Query Tool's Messages tab would select the entire page content. #8992 2026-03-16 14:39:42 +05:30
Dave Page e5cf456fae Fixed an issue where AI Reports are grayed out after setting an API key by auto-selecting the default provider. #9694
* Don't let auto-selection override an explicit default_provider choice.

If the same save payload includes a default_provider update (including
setting it to empty/disabled), skip the auto-selection logic so the
user's explicit choice is respected.
2026-03-16 14:24:09 +05:30
Dave Page da55da4d32 Replace misleading AI thinking messages with fun elephant-themed ones. #9702
The previous messages like "Vacuuming the catalog..." and "Analyzing
table statistics..." could be mistaken for actual database operations.
Replace them with clearly whimsical elephant-themed messages, expand
the pool to 32 messages, and consolidate them into a single shared
module with gettext() support.
2026-03-16 14:23:05 +05:30
Akshay Joshi b301bdcecd Updated release note 2026-03-16 12:43:29 +05:30
Dave Page 23bd3359c1 Fixed an issue where AI features are visible in the UI even when LLM_ENABLED is set to False. 2026-03-16 12:35:16 +05:30
Dave Page 0bc4edbab5 Improve the AI Assistant user prompt to be more descriptive of the actual functionality. 2026-03-16 12:34:44 +05:30
Dave Page 34aa360830 Allow copying of text from the AI Assistant chat panel. #9738 2026-03-16 12:16:45 +05:30
Dave PageandClaude Opus 4.6 7e39fc8477 Fix flakey SchemaDialogView 'change text' JS test
Add a wait for the FormView autofocus timer (200ms) to complete before
typing, preventing a race condition where the autofocus moves focus away
from the target field on slow CI machines. This matches the pattern
already used by simulateValidData in the same test file.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:14:10 +05:30
Dave PageandClaude Opus 4.6 8f74b2e6d4 Fixed an issue where AI Reports fail with OpenAI models that do not support the temperature parameter. #9719
Removed the temperature parameter from all LLM provider clients and
pipeline calls, allowing each model to use its default. This fixes
compatibility with GPT-5-mini/nano and future models that don't
support user-configurable temperature.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:13:04 +05:30
Dave PageandClaude Opus 4.6 c8cb744ffd Fix model tool prompt
* Fix NLQ system prompt to work with models that prioritize text instructions over tool calls.

The previous prompt told the model to "Return ONLY the JSON object, nothing else"
while also providing tool definitions. Models like Qwen 3.5 would follow the text
instruction and never use tools. The updated prompt clearly separates the tool-use
phase from the final JSON response phase, and explicitly instructs the model to
call tools directly rather than describing them in text.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update release notes for NLQ prompt fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix issue number in release notes for NLQ prompt fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:10:02 +05:30
Dave PageandClaude Opus 4.6 b3aa78c0a5 Added support for custom LLM provider URLs for OpenAI and Anthropic, allowing use of OpenAI-compatible providers such as LM Studio, EXO, and LiteLLM. #9703
- Add configurable API URL fields for OpenAI and Anthropic providers
- Make API keys optional when using custom URLs (for local providers)
- Auto-clear model dropdown when provider settings change
- Refresh button uses current unsaved form values
- Update documentation and release notes

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:08:55 +05:30
Dave Page 78e3b67eb1 Fix an issue where the AI Assistant input textbox sometimes swallows the first character of input. #9740 2026-03-16 12:06:47 +05:30
Muhammad Aqeel c8bd75c9a8 Fix apparmor_parser not found error in desktop postinst script (#9728)
Add a runtime guard in the postinst so apparmor_parser is only called
  when available. Previously, packages built on Ubuntu 24+ would fail to
  install on headless servers or systems without AppArmor tools. A warning
  is printed when the profile load is skipped to aid debugging.
2026-03-10 15:29:40 +00:00
Akshay Joshi a0e6da0772 1) Updated JavaScripts and Python dependecies.
2) Updated release note.
2026-03-10 13:41:19 +05:30
Rohit Bhati 8ca765478f Fixed an issue where permissions page is not completely accessible on full scroll. #9721 2026-03-10 12:59:42 +05:30
Pravesh Sharma f49c967bfd Added support to download binary data from result grid. #4011 2026-03-10 12:25:21 +05:30
Khushboo Vashi 0a539c32d9 Fixed an issue where OAuth2 authentication fails with 'object has no attribute' if OAUTH2_AUTO_CREATE_USER is False. #9279 2026-03-10 12:24:55 +05:30
Anil Sahoo 395ff36322 Ensure that the Geometry Viewer refreshes when re-running queries or switching geometry columns, preventing stale data from being displayed. #9392 2026-03-09 16:08:14 +05:30
Florian 00a44a5d76 fix TypeError Exception in session.py
Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
2026-03-09 12:21:36 +05:30
Daniel NylanderandDaniel Nylander 3ecdc57a59 i18n: Complete Swedish translation (3625/3625 strings)
- Translate all 357 previously untranslated strings
- Fix 1 duplicate entry ('on' with empty msgstr)
- Fix format string mismatch (%(provider)s)
- Total: 3625 translated strings (100% coverage)

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
2026-03-09 12:21:18 +05:30
Akshay Joshi 08b0f6fe7b 1) Updated Python and Javascripts dependencies.
2) Created new release note files for v9.14
2026-03-05 17:56:33 +05:30
Khushboo Vashi 6d18741f1a Ensure the Kerberos mock test handles OS errors correctly. 2026-03-05 17:44:12 +05:30
Akshay Joshi dc47bf48f7 Remove PG/EPAS 13 from the github runners. 2026-03-05 16:52:41 +05:30
Khushboo Vashi 5b231ddd3f Revert "Customize container user permissions using PUID and PGID. #9657"
This reverts commit 97c90f1e69.
2026-03-02 18:05:26 +05:30
Akshay Joshi 3e48c21fe5 Remove #9657 from release notes due to revert. 2026-03-02 17:06:53 +05:30
Akshay Joshi 4cc74c13f7 Updated version for release v9.13 2026-03-02 14:11:36 +05:30
Akshay Joshi 2cf5d39a01 Fixed one translation issue. 2026-03-02 14:09:25 +05:30
Akshay Joshi f4112c9a0a Updated yarn.lock 2026-03-02 14:08:49 +05:30
Domenico Sgarbossa 6f69120af5 Updated Italian translation for v9.13 2026-03-02 11:48:06 +05:30
Libor M. cf6d7f3b89 Czech translation for version 9.13. 2026-03-02 11:38:56 +05:30
Aditya Toshniwal b78fc884e3 Fixed an issue in file dialog where rename was not working. #9651 2026-02-27 18:24:54 +05:30
Rohit Bhati caafc6bb1b Fix broken checkbox selection in backup dialog objects tree. #9649 2026-02-27 17:01:11 +05:30
Akshay Joshi e9e52905cc Updated message catalogs for v9.13 2026-02-26 18:56:11 +05:30
Akshay Joshi cae00a1dc6 1) Fixed one issue in session.py
2) Updated release note.
2026-02-25 14:26:30 +05:30
Pravesh Sharma 5dd63ca16b Fixed an issue where modifying a shared server incorrectly updated the original server details. #9258 2026-02-25 11:22:44 +05:30
kon-foo 97c90f1e69 Customize container user permissions using PUID and PGID. #9657 2026-02-24 16:49:43 +05:30
Khushboo Vashi bcd48a92b9 Load predefined users from a JSON file through command line. #9229 2026-02-24 16:46:31 +05:30
Lance J.andChristian P. 6d0d387f53 ERD Tool: Insert table with relations via drag-and-drop. #5578 #8198
* Add preference for insert with relations

Co-authored-by: Christian P. <pirnichristian@gmail.com>

* Insert tables with relations on drag and drop

Co-authored-by: Christian P. <pirnichristian@gmail.com>

* Fix test mock not returning Erd Supported Data

Co-authored-by: Christian P. <pirnichristian@gmail.com>

---------

Co-authored-by: Christian P. <pirnichristian@gmail.com>
2026-02-24 12:15:54 +05:30
Rohit Bhati 3995ba9a95 Add support for 'ONLY' in Index creation dialog. #6386 2026-02-24 12:14:36 +05:30
Akshay Joshi 4bb6b72377 Updated Python and JavaScript dependencies. 2026-02-24 11:54:19 +05:30
balodis 080fcc1cfb Fix column ordering in unique/primary key constraint properties
The fromRaw formatter for the Columns field in unique constraint and
primary key properties used _.filter(allOptions, ...), which preserved
the order of allOptions (table column position) rather than the
constraint-defined column order from backendVal. Replaced with _.find
mapped over backendVal to preserve the correct constraint column order.

Added unit tests for cell and type formatter functions to verify
column ordering is preserved.
2026-02-23 17:11:38 +05:30
Dave Page 93e2f23a48 Update the release notes to properly describe the new AI features. 2026-02-23 15:07:36 +05:30
Akshay Joshi 965a27db39 typer[all]==0.24.* drop support for Python 3.9. Added conditional requirement. 2026-02-18 17:41:13 +05:30
Akshay Joshi 7b377ff3da Pin ESLint to 9.39.2 as 10.0.0 not working. 2026-02-18 17:19:05 +05:30
Akshay Joshi 2dedb6e69a Updated Python and Javascript dependencies. 2026-02-18 13:02:46 +05:30
kon-foo b15f15960f Fix misleading error when _FILE secret is not readable. 2026-02-18 12:10:23 +05:30
Khushboo Vashi 50f78bf210 Fix translation compilation. #9583 2026-02-18 11:09:06 +05:30
Akshay Joshi 0842f36f16 Updated release note 2026-02-17 17:41:42 +05:30
Khushboo Vashi 5002419611 Fixed an issue where the 'Quote strings only' configuration was ignored when downloading the result set. #7578 2026-02-17 17:19:41 +05:30
Dave Page f2756a3dcf Core LLM integration infrastructure to allow pgAdmin to connect to AI providers. #9641
* Core infrastructure for LLM integration.
* Add support for a number of different AI generated reports on security, performance, and schema design on servers, databases, and schemas, as appropriate.
* Add a Natural Language AI assistant to the Query Tool.
* Add an AI Insights panel to the EXPLAIN tool in the Query Tool, to analyse and report on issues in query plans.
2026-02-17 17:16:06 +05:30
Khushboo Vashi 2715932464 Update Release Notes. 2026-02-10 14:39:34 +05:30
Murtuza Zabuawala b366d210dc Allow users to customize "OF TYPE" columns during table creation. #229 2026-02-10 14:33:22 +05:30
Simon Randby fbbc12a0a3 Fix an issue where deployment of helm chart crashing with operation not permitted. #9572 2026-02-09 17:13:43 +05:30
Pravesh Sharma 9039080214 Fixed an issue where a long name in ERD table node was not breaking into multiple lines. 2026-02-09 14:53:51 +05:30
Pravesh Sharma f52584eef8 Fixed an issue where column comments were not displayed in the SQL tab for materialised views. #9486 2026-02-09 14:46:15 +05:30
Pravesh Sharma 5abd9e3c5b Fixed an issue where tools settings changed by the users were not restored on application relaunch. #8988 2026-02-09 10:54:53 +05:30
Akshay Joshi 3e05f7a14f Updated Javascript and Python dependencies. 2026-02-06 13:30:09 +05:30
Aditya Toshniwal 9464e44887 Update windows installer side image as the current one gets flipped. 2026-02-04 14:46:48 +05:30
Aditya Toshniwal 18c73d00ce Update version in Helm for release v9.12 2026-02-02 15:17:06 +05:30
Aditya Toshniwal aa33a99b0d - Updated release notes.
- Fix translation compilation.
2026-02-02 15:13:14 +05:30
Anil Sahoo 6000cc0fb4 Fixed an issue where pgAdmin4 app on macOS cannot auto-update while running on a read-only volume even if present in the Applications folder. #9402 2026-02-02 15:11:58 +05:30
Akshay Joshi ef1b69bd5a Update version for release v9.12 2026-02-02 12:24:51 +05:30
Akshay Joshi 5103c47fdf Updated release note. 2026-01-30 17:04:23 +05:30
Libor M. b539740d8e Czech translation for version 9.12 2026-01-30 16:56:52 +05:30
Rohit Bhati 0cb6738343 Fix pgAdmin fails when performing Backup/Restore on a PostgreSQL connection defined exclusively via pg_service.conf. #9553 2026-01-30 16:54:48 +05:30
Domenico Sgarbossa eee9989dde Updated Italian translation for v9.12
update translations
2026-01-30 16:52:33 +05:30
Yogesh Mahajan 596b14a0f4 Ensure the container deployment supports boolean values in yaml format. #9522 2026-01-30 12:10:36 +05:30
Aditya Toshniwal a46d4c22d8 Updated message catalogs for v9.12 2026-01-30 12:04:47 +05:30
David Aparicio c47c79c3dc Enables deployment strategy configuration within the Helm chart. 2026-01-29 14:03:02 +05:30
Yogesh Mahajan c45502dc01 Update menu bar documentation. #9567 2026-01-29 13:14:12 +05:30
MrMonkeyface 5edab2f621 Fix typo in note about file path specifications. 2026-01-28 11:42:08 +05:30
Akshay Joshi 8f39f8a6bc Update JavaScript Dependencies. 2026-01-27 12:25:34 +05:30
dependabot[bot] 26ea03f421 Javascript dependency: Bump lodash from 4.17.21 to 4.17.23 in /web 2026-01-23 11:49:46 +05:30
dependabot[bot] 63e3ad8d33 Javascript dependency: Bump lodash-es from 4.17.22 to 4.17.23 in /web (#9556) 2026-01-23 11:49:29 +05:30
Akshay Joshi 31d1dbc697 Ensure that the tooltip is disabled for a password cell in a dialog grid. #9552 2026-01-22 15:15:13 +05:30
Anil Sahoo 0cac007970 Add new options like INHERIT and SET to the Role's membership tab. #6451 2026-01-20 11:53:32 +05:30
Akshay Joshi 93605c0baa Updated Python and Javascript dependencies. 2026-01-19 17:46:22 +05:30
Akshay Joshi 3d1cd444b0 Updated release note 2026-01-19 17:16:56 +05:30
Paul BOURHISandPaul Bourhis a500939532 Enhance OAUTH2 and OIDC authentication support with improved claims handling and configuration options
Change logging level from exception to error for OIDC profile data issues.
Refactor debug logging in OAuth2 authentication to improve clarity and consistency
Add error handling for missing OAuth2 provider and enhance claims processing logic
Enhance OIDC ID token handling by implementing JWT parsing and updating tests to mock claims extraction
Refactor ID token claims extraction for OIDC providers and update tests to mock userinfo handling
Refactor OAuth2 configuration to use get method for optional URLs
Enhance OAuth2 documentation and implement PKCE support for public clients in authentication logic
Fix typo in OAUTH2 authentication documentation
Implement Azure Entra ID Workload Identity authentication support and add corresponding tests

Co-authored-by: Paul Bourhis <paul.bourhis@bhs-consulting.com>
2026-01-19 16:06:25 +05:30
Aditya Toshniwal 3dab883d88 Update yarn.lock to fix few security vulnerabilities in upstream. 2026-01-16 10:55:45 +05:30
Aditya Toshniwal 7c36eaba90 Warn user of unsaved data output edits before page navigation. #8916 2026-01-14 18:20:52 +05:30
Akshay Joshi e0ba1dd68e Updated JavaScript dependencies. 2026-01-14 12:44:30 +05:30
Rohit Bhati 90be555ec8 Fix pg_restore logs to distinguish UI sync issues from actual failures. #9074 2026-01-14 12:32:12 +05:30
Jørgen H. Fjeld 402ddafa2a Fix sslsni boolean to integer conversion for libpq compatibility
The sslsni connection parameter was being stored as a boolean (true/false)
in the database, but libpq expects integer values (1/0) for this parameter.
When a boolean value was passed to libpq, it resulted in SSL connection
failures with 'unexpected eof while reading' errors.

This fix converts boolean connection parameters (sslcompression, sslsni) to
integers when creating the connection string in server_manager.py, ensuring
libpq receives the expected integer format.

Fixes connection issues when using PGSSLSNI=1 with PostgreSQL 14+ servers.
2026-01-14 12:31:36 +05:30
Akshay Joshi 74c8b2d0a1 Updated release note. 2026-01-08 18:45:02 +05:30
Yogesh Mahajan bef374d023 Upgrade ID column in the database table to BigInteger to support large OID values. #9223 2026-01-08 18:38:02 +05:30
Pravesh Sharma a9d56402a1 Fixed an issue where connection parameters were using localized values instead of literal values, causing connection failures. #9500 2026-01-08 18:10:15 +05:30
Akshay Joshi 62e2d18b02 Mask the secret key for restrict option in the process watcher when restoring plain SQL file. #9518
Fixed coderabbit review comment.
2026-01-08 11:39:01 +05:30
Rohit Bhati 3b184dbeee Fixed an issue where the dashboard freezes on initial render when there is a high number of locks. #9285 2026-01-07 17:10:35 +05:30
Khushboo Vashi 71920c2903 Fixed the SSL certificate issue while the CA file is not configured. 2026-01-06 17:07:45 +05:30
Rohit Bhati d30fd5d67e Disable Parameters and Membership fields when object is not new for Login and group roles. #9350 2026-01-06 16:45:07 +05:30
Akshay Joshi d26aa0a8de 1) Added --no-cache-dir for OSX while installing requirements.txt
2) Updated release note.
2026-01-06 12:25:35 +05:30
Guiorgy f63f8f7342 Removed redundant constraint for Python version. 2026-01-06 12:06:12 +05:30
Yogesh Mahajan 1301e5d2ff Ensure saved shared server passwords are re-encrypted on password change. #9258 2026-01-06 11:29:42 +05:30
Aditya Toshniwal cc0377fb59 Code changes required by latest react-virtualized-auto-sizer package which was updated in the previous commit. 2026-01-05 17:10:28 +05:30
Akshay Joshi 79de352636 Updated Javascript dependencies. 2026-01-05 16:42:52 +05:30
Rohit Bhati 965a6ad886 Fix Query Tool state restoration for new connections and queries. #8987 2026-01-05 16:32:49 +05:30
Aditya Toshniwal c6551145a3 Optimize checkbox selection logic in backup dialog objects tree. #9110 2026-01-05 16:18:57 +05:30
Aditya Toshniwal 04583fe8f0 Fixed an issue where data filter dialog removes newline character when sending SQL to the query tool. #9260 2026-01-05 15:01:54 +05:30
Akshay Joshi a1d2308dc9 Updated certifi package 2026-01-05 13:34:16 +05:30
Akshay Joshi 52daa56a04 Copyright updated for 2026 2026-01-05 13:33:45 +05:30
Akshay Joshi 19532f534f Updated Python and Javascript dependencies. 2026-01-05 13:23:38 +05:30
Khushboo Vashi 7462a6a91f Fixed the SSL certificate issue while checking for the upgrade. #9293 2026-01-05 13:01:02 +05:30
Guiorgy c3da32f0f7 Correct erroneous comment in Dockerfile 2026-01-05 12:59:50 +05:30
Degit22 01e8d0c7e9 Update Russian translation. 2026-01-05 12:59:16 +05:30
Guiorgy 30f032b7d8 Optimisations in the Dockerfile
* mount .git from host instead of copying & removing
* use tmpfs for build cache in Dockerfile
* avoid rerunning apk when requirements.txt changes
2026-01-01 14:00:49 +05:30
Pravesh Sharma a9bf4c23bc Fixed a sorting issue in the system stats memory usage table. #9332 2026-01-01 11:28:33 +05:30
Dave Page a5e9315b89 Add warning about the new Windows cert to the release notes. 2025-12-23 12:37:54 +00:00
Dave Page cf123a3290 Update Windows code signing to work with new hardware key (or none) (#9483) 2025-12-23 12:32:03 +00:00
Akshay Joshi 44434948e2 Updated Python and Javascript dependencies. 2025-12-15 16:58:07 +05:30
Aditya Toshniwal a2ea57fc2e Fixed an issue where 'View/Edit Data' shortcut opened 'First 100 rows' instead of 'All Rows'. #9235 2025-12-15 13:47:54 +05:30
Aditya Toshniwal 5dd07d5d4b Fixed an issue where double click to open a file in the file manager is not working. #9196 2025-12-15 13:28:00 +05:30
Aditya Toshniwal 491fbe8a36 Add a new button in the query tool data output toolbar to get entire range of data. #8890 2025-12-12 15:38:01 +05:30
Aditya Toshniwal 63397a003a Fixed an issue where the Query History panel would auto-scroll to the top and did not preserve the scroll bar position for the selected entry. #9380 2025-12-12 11:27:39 +05:30
Domenico Sgarbossa 10669d60a6 Italian translation updated 2025-12-11 16:20:03 +05:30
Akshay Joshi 1457f08343 Updated Python and Javascript dependencies. 2025-12-11 16:02:44 +05:30
Khushboo Vashi dc801e362e Update version for release v9.11 2025-12-08 15:15:10 +05:30
Anil Sahoo 55a332be5b Fix an issue with the type casting of default string function/procedure arguments in the debugger tool. #9036 2025-12-08 14:24:00 +05:30
Akshay Joshi 51bd866a3a 1) Updated urllib3 version.
2) Updated release note.
2025-12-08 11:30:36 +05:30
Akshay Joshi d5a909f14c Plain SQL restore runs with '\restrict' option to prevent harmful psql meta-commands. #9368 2025-12-08 11:02:10 +05:30
Libor M. 5129905307 Czech translation for version 9.11 2025-12-08 11:01:08 +05:30
Khushboo Vashi 6f5c69a4c8 Specify the correct hostname placeholder for the Password Exec command. 2025-12-05 14:40:47 +05:30
Aditya Toshniwal dd51290d06 Upgrade React version to latest as upstream has fixed a security bug 2025-12-04 18:21:58 +05:30
Aditya Toshniwal d46bce2d7b Fixed an issue where copying highlighted text in the query tool data output cell editor would copy the complete string. #9372
Fixed an issue where copying a single cell should not add quoting. #9373
2025-12-04 16:58:39 +05:30
Khushboo Vashi e50d839ac0 Updated message catalogs for v9.11 2025-12-04 15:50:27 +05:30
Khushboo Vashi d26888c65c Update release notes. 2025-12-03 12:08:17 +05:30
Tobi 2ef67a5fa2 Ensure the proper handling of extra volume mount configurations in the Helm deployment template by correcting the configuration value references. #9408 2025-12-03 12:06:13 +05:30
Akshay Joshi c6406dbaa4 Fixed Javascript test cases. 2025-12-02 16:37:10 +05:30
Jun f55fcf7baf fix: copyright updater skips folders like 'modules' 2025-12-02 12:05:47 +05:30
Akshay Joshi 71719db3ab sphinx==9.0.0 required Python version >= 3.11. Back to version 7.4.7 2025-12-02 11:55:26 +05:30
Akshay Joshi 086fa9bf87 psycopg[c] v3.3.0 requires Python version 3.10 and above. 2025-12-02 11:32:17 +05:30
Akshay Joshi dc7873c2b2 Update Python and JavaScript dependecies. 2025-12-01 19:13:04 +05:30
Koren Peretz 56040aa116 Use -i instead of -I in the helm deployment YAML for best minimal practice. 2025-12-01 16:27:46 +05:30
Dave Page 9c8df1ad3b React string cleanup. 2025-12-01 16:18:27 +05:30
Dave Page e7db3510e1 Javascript string cleanup (#9405)
* Javascript string cleanup

* Further JS string fixes.
2025-12-01 10:17:30 +00:00
Guiorgy 0132ce2001 fixed .git copy destination inside Dockerfile 2025-12-01 12:17:22 +05:30
Dave Page 70e4435b04 Python string cleanup
* Python string cleanup
* Fix line lengths
* Further Python string fixes.
2025-12-01 11:06:21 +05:30
Dave Page ec3b508ba6 Cleanup a bunch of documentation issues. 2025-11-28 15:40:48 +00:00
Khushboo Vashi 7885ed7f87 Update release notes. 2025-11-27 11:03:40 +05:30
Koren Peretz d1b25c99cc Fix the Helm chart server definition and change the app version. #9393 2025-11-27 10:59:28 +05:30
Guiorgy c7909958da Optimised Dockerfile.
* Move the installation of dependencies to the top of the stage.
* Upgrade all system packages.
* Combine copy layers where possible.
2025-11-26 14:20:06 +05:30
Aditya Toshniwal 8c153be335 Fixed an issue where connection is failing via Query Tool/PSQL Tool workspaces. #9354 2025-11-25 12:05:22 +05:30
Akshay Joshi 65860fc12c Updated Python and JavaScript dependencies. 2025-11-24 18:25:11 +05:30
Akshay Joshi fc04e2eb1a Remove __gpg_sign_cmd as it is failing on Fedora 43 due to some obsolete options. 2025-11-24 13:58:18 +05:30
Guiorgy d481507569 Removed the RUN rm -rf layer from the Dockerfile app-builder stage; exclusions are now handled by updating .dockerignore. 2025-11-24 11:37:49 +05:30
Guiorgy 6d01a247db Ensure LF line endings on text files. 2025-11-21 12:16:35 +05:30
Nicolas Boulard 27779370d8 Add conditional TLS support for the Ingress in the Helm chart. #9345 2025-11-21 12:08:22 +05:30
Akshay Joshi 482549b951 Updated release note. 2025-11-19 12:35:17 +05:30
Rohit Bhati f06668aed9 Add support of DEPENDS/NO DEPENDS ON EXTENSION for INDEX. #6388 2025-11-19 12:32:35 +05:30
Guiorgy 4129d38410 Fix pkg_resources deprecation warning by migrating Docker base image to python:3-alpine from alpine:latest. #9155 2025-11-19 10:59:27 +05:30
Akshay Joshi c03b55042c Updated Python and Javascript dependencies. 2025-11-18 16:33:36 +05:30
Akshay Joshi f22aa1597f Updated release note 2025-11-18 16:21:13 +05:30
Rohit Bhati 467e496599 Add support of DEPENDS/NO DEPENDS ON EXTENSION for MATERIALIZED VIEW. #6390 2025-11-18 16:14:00 +05:30
Khushboo Vashi 7b85a09603 Fix Debian builds by executing sudo apt update. 2025-11-18 12:48:13 +05:30
Khushboo Vashi 57f88cf5af Improved Debian build process by ensuring package lists are refreshed during the build workflow. 2025-11-18 12:18:14 +05:30
Anil Sahoo d6b2379fbe Fixed an issue where EXPLAIN should run on query under cursor if no text is selected. #9297 2025-11-18 12:17:46 +05:30
Dave Page 39c2f397f7 Create .coderabbit.yaml 2025-11-14 10:46:12 +00:00
Khushboo Vashi 63ee81202b Updated version for v9.10. 2025-11-13 12:28:13 +05:30
Anil Sahoo 14dec7e5ed Add support for showing the column data type beside column name in the object explorer. #8968 2025-11-12 19:50:28 +05:30
Akshay Joshi 5e472ec42a Updated Python and Javascript dependencies. 2025-11-12 18:14:25 +05:30
Akshay Joshi 60c56b3285 Fixed API test case for restore. 2025-11-10 13:26:42 +05:30
Akshay Joshi f251fdfdb1 Updated version for release v9.10 2025-11-10 11:40:12 +05:30
Khushboo Vashi 09d2b7eeb0 1) Fixed LDAP authentication flow vulnerable to TLS certificate verification bypass (CVE-2025-12765). #9324
2) Fixed LDAP injection vulnerability in LDAP authentication flow (CVE-2025-12764). #9325
2025-11-10 11:27:56 +05:30
Yogesh Mahajan e374edc692 Fixed Command injection vulnerability allowing arbitrary command execution on Windows (CVE-2025-12763). #9323 2025-11-10 11:27:56 +05:30
Akshay Joshi 1d397395f7 Fixed remote code execution vulnerability when restoring PLAIN-format SQL dumps in server mode (CVE-2025-12762). #9320 2025-11-10 11:27:55 +05:30
Libor M. ed52a44b17 Updated Czech translation. 2025-11-10 11:13:33 +05:30
Muhammad Aqeel 06fb5a45c1 pgAdmin4 debian packages were not having release build number and platform distribution name. 2025-11-07 17:33:14 +05:30
Khushboo Vashi d1805c5640 Ensure that the Password Change and Application Restore features comply with FIPS standards. 2025-11-07 17:32:51 +05:30
Domenico Sgarbossa c04b9198c8 Updated Italian translation 2025-11-07 10:09:26 +05:30
Aditya Toshniwal ec63acc4c5 Updated message catalogs for v9.10 2025-11-06 15:55:36 +05:30
Aditya Toshniwal f906326003 Fixed an issue where the last used storage directory was reset to blank, leading to access denied errors during backup or restore operations. #9281 2025-11-06 15:43:06 +05:30
Aditya Toshniwal 39b6f40482 Fix following issues:
1. Debian builds are failing after commiting changes for #9240.
2. Object explorer context menu shows "No objects selected" on preferences change.
2025-11-04 16:49:12 +05:30
Akshay Joshi e6f6a90d2f Updated Python and JavaScript dependencies. 2025-11-03 18:39:10 +05:30
Akshay Joshi d80cc6f8f9 Updated release note. 2025-10-31 18:20:00 +05:30
Rohit Bhati 38ebb43bac Add support of DEPENDS/NO DEPENDS ON EXTENSION for PROCEDURE. #6391 2025-10-31 18:17:04 +05:30
Pravesh Sharma 48b4a8d448 Fixed an issue where the Select All option on the columns tab of import/export data was not working in languages other than English. #9233 2025-10-31 16:25:51 +05:30
Koren Peretz d9b3f950ad Fixed indentation issue in the extraEnvVars field, preserved the serverDefinitions template, corrected a typo in README.md, and increased resource allocations in the Helm chart. 2025-10-31 12:40:47 +05:30
Aditya Toshniwal 986ba41ba9 Added the ability to search for tables and automatically bring them into view in the ERD tool. #4306 2025-10-31 12:19:27 +05:30
Pravesh Sharma 08379d6ae0 Fixed an issue where the 2FA window redirected to the login page after session expiration. #9132 2025-10-31 11:17:04 +05:30
Yogesh Mahajan 7251c1f628 Fix github actions for pg17 for windows platform broken due to changes in github runner image. 2025-10-31 11:05:05 +05:30
LiZixin 061450c8d7 Fixed an issue where the Debian build process failed with a "Sphinx module not found" error when using a Python virtual environment. #9240 2025-10-31 10:38:04 +05:30
Akshay Joshi b62212b8e5 Fixed an issue that prevented assigning multiple users to an RLS policy. #9304 2025-10-30 18:54:20 +05:30
Anil Sahoo 282a956f4f Reverted changes in Python tests for EPAS/PG YAML files that were added to support Subscription RESQL test cases and adjust streaming values for PG v16+. 2025-10-30 12:50:33 +05:30
Aditya Toshniwal 00dbe58125 Add support for formatting .pgerd ERD project file. #8912 2025-10-29 16:22:37 +05:30
Aditya Toshniwal abdcd983f6 Add support for setting image download resolution in the ERD tool. #6698 2025-10-29 14:57:20 +05:30
Akshay Joshi c7a6056ee3 Fixed an issue where Schema Diff does not ignore Tablespace for indexes. #9117 2025-10-28 16:31:39 +05:30
Akshay Joshi 55c5e86fe0 1) Updated version of Authlib, psycopg[c], typer[all] and selenium.
2) Updated release note.
2025-10-28 11:45:57 +05:30
Royston Shufflebotham 8d55e9a445 Add support for displaying detailed Citus query plans instead of 'Custom Scan' placeholder. #7885 2025-10-28 10:47:55 +05:30
Akshay Joshi c1da777fba 1) Updated Russian translation.
2) Updated electron version.
3) Updated release note
2025-10-27 11:26:08 +05:30
AKY 9e35c32ef2 Updated Korean translation 2025-10-27 11:17:45 +05:30
Aditya Toshniwal 37a164cccb - Rebase pgadmin-org/react-data-grid fork to latest.
- Fixed an issue where data output column resize is not sticking in Safari. #8504
2025-10-27 10:45:36 +05:30
Aditya Toshniwal c20d035f1b Update Python and JS packages. 2025-10-24 08:37:55 +05:30
Aditya Toshniwal 9a44fee646 Update release notes. 2025-10-24 08:29:01 +05:30
Aditya Toshniwal 0a14db01be Migrate pgAdmin UI to use React 19. #8676 2025-10-24 08:26:10 +05:30
Anil Sahoo 53a994ba1e Fixed an issue where Python tests for EPAS github actions were failing due to a port mismatch with RESQL test case files for Subscription. 2025-10-22 18:14:12 +05:30
Aditya Toshniwal 91ad54d17b Fixed an issue where query tool shortcut would trigger the callback twice. #9157 2025-10-14 14:33:17 +05:30
Akshay Joshi ea5ee74205 Update version for release v9.9 2025-10-13 20:51:55 +05:30
Anil Sahoo 5f22b4e2d2 Fixed following issues related to auto-update:
1. Fixed the issue where auto-update was not working for macOS x64 arch machines as pgadmin4 zip file name has x86_64 in it.
2. Improved error handling in the /upgrade_check API by replacing the static “Failed to check for update” message for Windows users with a dynamic error message.
3. Fixed the CSS issue affecting the close icon in the warning notifier.
4. Removed trailing periods from helper texts and notifier messages in the app’s auto-update workflow. #9133
2025-10-13 17:25:14 +05:30
Rohit Bhati 758bbc7272 Enable depends on extension option on for functions. 2025-10-13 11:39:37 +05:30
rlbxku1r 618e03b65f Update Japanese translation for v9.9 2025-10-13 11:38:35 +05:30
Akshay Joshi e9b97d61f8 1) Pin pywinpty due to https://github.com/andfoy/pywinpty/issues/545
2) Remove scram_client_key and scram_server_key from the connection string parameter
   as it is not meant to be specified directly by users or client applications.
2025-10-10 13:07:32 +05:30
Domenico Sgarbossa 83377d4a50 Italian translation updated for v9.9 2025-10-10 13:06:34 +05:30
Aditya Toshniwal c03d21899b Updated message catalogs for v9.9 2025-10-10 10:07:42 +05:30
Koren Peretz d03a0cdce6 Add support for initializing the pgAdmin4 Kubernetes Helm chart. #9225 2025-10-08 14:41:00 +05:30
Akshay Joshi f3567518d3 Added option to skip the password dialog when using an identity file. #6996
1. Don't ask for the SSH Tunnel or Database server password if it is already saved.
2. Modified the generic error message from the SSH Tunnel library.
2025-10-07 13:13:37 +05:30
Akshay Joshi b30520adc0 Updated Python and Javascript dependencies. 2025-10-06 17:33:12 +05:30
Yogesh Mahajan c6af61afd3 Implement pre and post scenario SQL execution in subscription ResQL tests to manage publication lifecycle. #8932 2025-10-03 12:12:15 +05:30
Akshay Joshi 04024c7f61 Updated Python and Javascript dependencies. 2025-10-01 15:27:23 +05:30
Rohit Bhati 9e6ab295df Add support of DEPENDS/NO DEPENDS ON EXTENSION for ALTER FUNCTION. #6385 2025-10-01 13:49:03 +05:30
Akshay Joshi 5c9acc1c3d 1) Added PG 18 in the github runner.
2) Added PG 18 in the docker container file.
2025-09-29 13:40:03 +05:30
Anil Sahoo c75bba03c2 1) Added 'failover' parameter support in CREATE and ALTER SUBSCRIPTION for PostgreSQL v17+. #8932
2) Added 'two_phase' parameter support for ALTER SUBSCRIPTION for PostgreSQL v18+.
3) Updated versioned_template_loader.py to prioritize v18+ templates.
4) Updated the default value of the streaming parameter in CREATE SUBSCRIPTION to 'parallel' in PG v18 (previously false).
2025-09-29 12:52:47 +05:30
Aditya Toshniwal 93bbadb994 Fixed an issue where the query tool displayed 'default' instead of 'null' for null text data in the data output. #9098 2025-09-29 12:37:25 +05:30
Akshay Joshi 42ff67c845 Updated Python and Javascript dependencies. 2025-09-25 15:50:14 +05:30
Yogesh Mahajan 5376d88444 Update the PATH variable with the newly installed EPAS directory to use the correct pg_config. 2025-09-24 15:55:10 +05:30
Yogesh Mahajan f733d124bd Update the PATH variable with the newly installed PostgreSQL directory to use the correct pg_config. 2025-09-24 14:55:56 +05:30
Aditya Toshniwal 7ff3c4bbeb Fixed an issue where shortcuts are not working as expected on multiple keyboard layouts. #9157 2025-09-17 11:34:15 +05:30
Aditya Toshniwal e5590797c0 Fixed an issue where saving the newly changed preferences was not reflecting on the preferences tab. #9158 2025-09-16 14:09:11 +05:30
Akshay Joshi 8576a5e7e6 Updated Javascript dependencies. 2025-09-15 09:45:05 +02:00
Akshay Joshi 3e66b6f7be 1) Added "MULTIRANGE_TYPE_NAME" option while creating a Range Type. #6394
2) Added "SUBSCRIPT" option while creating an External Type. #6395
2025-09-11 14:27:27 +05:30
Akshay Joshi 2fd2a144f1 Updated Python and Javascript dependecies. 2025-09-08 16:34:56 +05:30
Pravesh Sharma 500a5c7101 Fixed an issue where the pgAdmin configuration database wasn't being created on a fresh install when an external database was used for the configuration. #9125 2025-09-02 19:25:04 +05:30
Khushboo Vashi 5498682934 Update version for release v9.8 2025-09-01 16:39:08 +05:30
Khushboo Vashi cdeb18fcbb Fixed Cross-Origin Opener Policy (COOP) vulnerability in the OAuth 2.0 authentication flow (CVE-2025-9636). #9114 2025-09-01 16:34:18 +05:30
Aditya Toshniwal 0de635cc4c Fixed an issue where editor shortcuts fail when using Option key combinations on macOS, due to macOS treating Option+Key as a different key input. #9116 2025-09-01 16:21:03 +05:30
Akshay Joshi e09af0a0e9 Updated release note. 2025-08-28 16:18:38 +05:30
Akshay Joshi ade57d4ec4 Updated Python and JavaScript dependencies. 2025-08-28 12:56:20 +05:30
Rohit Bhati fc41c795f1 Add menu items for truncating foreign tables. #6396 2025-08-28 10:23:46 +05:30
Pravesh Sharma 7caaf2de82 Fixed an issue where pgAdmin config migration was failing while upgrading to v9.7 #9095 2025-08-28 10:15:35 +05:30
Akshay Joshi 09bc544e83 Pin Paramiko to version 3.5.1 to fix the DSSKey error introduced in the latest release. #9090 2025-08-25 18:09:45 +05:30
Domenico Sgarbossa 42a47126aa Italian translation update 2025-08-25 18:08:23 +05:30
Aditya Toshniwal db87df8f82 Remove usage of BrowserFS as it is deprecated. #7448 2025-08-25 14:34:33 +05:30
Aditya Toshniwal 15c212a2df Change the default pgAdmin theme to System. #9093 2025-08-25 12:33:27 +05:30
Yogesh Mahajan 68627ab44e Allow user to configure security related gunicorn parameters. #8891 2025-08-25 11:52:07 +05:30
Pravesh Sharma 800fdce316 Unpin Electron version 35.x as the GTK crash issue has been resolved upstream. 2025-08-22 11:32:58 +05:30
Akshay Joshi a5557b466c Updated Python and Javascript dependencies. 2025-08-21 13:54:07 +05:30
Anil Sahoo cad6025ce9 Fixed an issue on Linux systems where the /upgrade_check API in server mode raised a KeyError. 2025-08-20 08:29:11 +05:30
Aditya Toshniwal f8b894d52b Update version for release v9.7 2025-08-18 15:59:05 +05:30
Aditya Toshniwal 9d0ec04667 Add support for changing cursor blink rate within the editors. #8712 2025-08-18 12:34:31 +05:30
webmasterzamora 24b4d35565 Spanish translation for version 9.7 2025-08-18 12:27:09 +05:30
Libor M. 0c8571de9e Czech translation for version 9.7 2025-08-18 12:26:16 +05:30
Akshay Joshi 2075dd5270 Updated message catalogs for v9.7 2025-08-14 16:23:49 +05:30
Yogesh Mahajan 7d0241008b Ensure that disabling "Save Application State" in Preferences prevents tool data from being saved and stops it from being restored on application restart. #9067 2025-08-14 13:47:30 +05:30
Akshay Joshi ecb652c7c5 Updated Python and JavaScript dependencies. 2025-08-12 11:54:03 +05:30
Pravesh Sharma 9b5f0f0f63 Fixed an issue where downloading images on the ERD tool was not working in desktop mode. #9047 2025-08-12 11:51:58 +05:30
Akshay Joshi 1eb7c9d3e2 Added support for builtin locale provider while creating Collation. #8931 2025-08-11 11:42:14 +05:30
Akshay Joshi a4c5e5683c Remove python version check for setuptools. 2025-08-07 18:56:51 +05:30
Khushboo Vashi d53a34b8df Fixed the issue where updating the name of a table column does not reflect in the corresponding primary key constraint. #7617 2025-08-07 16:36:38 +05:30
Anil Sahoo 8a4a3814ab Fixed an issue where custom column widths in the result grid of Query Tool or View/Edit Data were reset after re-executing a query. #7057 2025-08-07 15:32:40 +05:30
Akshay Joshi 6aaf47ddb4 Fixed JavaScript test cases. Replace deprecated inputProps with slotProps. 2025-08-06 18:54:04 +05:30
Akshay Joshi 4d078ab747 Updated Python and JavaScript dependecies. 2025-08-05 13:10:42 +05:30
excavator-matt 96de08212a Clarify version in issue template (#9020) 2025-08-04 14:43:55 +01:00
Anil Sahoo 2dd27d20c1 Fixed an issue where adding breakpoints caused errors, and stepping out of a nested function removed breakpoints from the parent function. #8982 2025-08-04 16:59:38 +05:30
Aditya Toshniwal 86c2769221 Check if sharp is failing on bundle before running image minimizer 2025-08-04 12:35:29 +05:30
Akshay Joshi 1316a3d7d8 Added all new connection string parameters introduced in PostgreSQL 16 and later. #8935 2025-08-04 12:02:30 +05:30
Aditya Toshniwal 9f866b0b27 Make image minimising optional based on sharp package availability. 2025-08-04 11:38:47 +05:30
Pravesh Sharma 829d6323b8 Fixed an issue where CPU usage was very high on Windows when opening the psql tool. #8864 2025-08-01 12:41:16 +05:30
Akshay Joshi 559c6cfa65 Added GENERIC_PLAN, MEMORY, SERIALIZE option to EXPLAIN/EXPLAIN ANALYZE command. #6456 2025-08-01 12:40:07 +05:30
Yogesh Mahajan 1f7fbb91f7 Ensure the scratch pad in the Query Tool is not restored after it is closed. #9007
Update the documentation for parameters that require file paths. #9008
2025-07-31 17:24:27 +05:30
Rohit Bhati 3b9359945e Added PKEY index in the index statistics summary. #8971 2025-07-31 17:12:15 +05:30
Aditya Toshniwal 99b822e472 Add support for server tag-based filtering in the Object Explorer. #8917 2025-07-31 17:06:40 +05:30
Aditya Toshniwal b2ec3a5acc Fixed an issue where pgAdmin failed to update the server connection status when the server was disconnected in the background and a refresh was performed on that server. #8149 2025-07-31 12:43:49 +05:30
Anil Sahoo 9eec4f5b8c Add support for automatic updates in the pgAdmin 4 Desktop application on macOS. #5766 2025-07-31 11:30:19 +05:30
Dave Page 6db0cc5c5d Ensure we have the tools to configure SELinux policies.
The semanage utility is required to configure the policy for the 
pgAdmin log/lib directories in server mode, but it may not always 
be installed on a system.
2025-07-30 11:45:07 +05:30
Aditya Toshniwal a197c85f3a Replace shortened URLs using goog.gl as goog.gl links will no longer be available 2025-07-30 10:17:06 +05:30
Akshay Joshi aa0a1f676d Fix PEP8 2025-07-29 18:12:40 +05:30
Akshay Joshi 5963593fed Replace keyword PROCEDURE with FUNCTION while creating trigger and event trigger. #6384 2025-07-29 17:48:41 +05:30
Akshay Joshi e0e99ddbb5 1) Updated release note.
2) Updated logic for release converter
2025-07-29 15:48:16 +05:30
Rohit Bhati 85510b961f Make Dashboard tables to be vertically resizable. #8650 2025-07-29 15:31:47 +05:30
Rohit Bhati bf229c0d79 Ensure DB restriction type is preserved while import and export server. #8867 2025-07-29 15:26:01 +05:30
Akshay Joshi 33dcb36db5 1) Added release note
2) Updated JavaScript dependencies
2025-07-29 11:57:07 +05:30
Pravesh Sharma 8a4eb4f8ad Fixed an issue in Firefox where the query window would shift to the left after opening the history tab or selecting a column header in the results grid. #8756 2025-07-28 16:27:31 +05:30
Pravesh Sharma 62eb330423 Introduced an ‘Editor’ preferences category and migrated all editor related settings into it. #8861 2025-07-28 14:09:16 +05:30
Murtuza Zabuawala e73d8f4532 Fixed incorrect behaviour of the option deduplicate items after creating the index. #8969 2025-07-28 13:23:39 +05:30
Akshay Joshi 79aeb5204c Updated Python and JavaScript dependencies. 2025-07-28 11:31:40 +05:30
Akshay Joshi de48d4ecda Updated release date. 2025-07-23 17:56:15 +05:30
Aditya Toshniwal 0d204d0554 Update yarn.lock as previous commit is changing the yarn.lock file on yarn install 2025-07-22 17:19:24 +05:30
Aditya Toshniwal 37bdd22e24 Update form-data in yarn.lock to fix a security issue found in form-data 2025-07-22 17:01:52 +05:30
Aditya Toshniwal 2a43d1c939 Nullify git:hash script in package.json for source code tarball release since commit hash is already included 2025-07-22 16:08:51 +05:30
c4f7a18ec5 Fixed following issues found while testing v9.6 candidate build:
1. Migration failed on Debian 11.
2. Menu shortcuts should not for opening search object and query tool when not in default workspace.

Co-authored-by: Yogesh Mahajan <yogesh.mahajan@enterprisedb.com>
Co-authored-by: Pravesh Sharma <pravesh.sharma@enterprisedb.com>
2025-07-22 16:00:29 +05:30
Aditya Toshniwal fdc38f75f8 Update version for release v9.6 2025-07-21 15:34:04 +05:30
Yogesh Mahajan 56d5cab13e Ensure that reconnect dialogs are shown when restoring pgAdmin sessions for the Query Tool or View/Edit Data, if the server password was not saved. #8901 2025-07-21 15:11:12 +05:30
Aditya Toshniwal bec47845be Add support for showing pgAdmin shortcuts on Electron menus. #1923 2025-07-21 15:07:17 +05:30
Libor M. 6dc5807192 Czech translation for version 9.6 2025-07-19 10:20:56 +05:30
Khushboo Vashi ea085cd009 Fix pagination issues in the query tool data output when using a server-side cursor. 2025-07-18 17:54:06 +05:30
Domenico Sgarbossa 6fdb82dd76 Italian translation updated for v9.6 2025-07-18 09:09:24 +05:30
Aditya Toshniwal a3e1a3672c Updated message catalogs for v9.6 2025-07-17 18:29:52 +05:30
Akshay Joshi 8046c238d8 Make the 'Password' and 'Save Password' options visible in edit mode in the Server Dialog. 2025-07-17 18:19:20 +05:30
Yogesh Mahajan 82730da392 Fixed following issues reported while testing application restore changes: #8901
1. Preserve updated tab titles on session restore
2. Ensure query tools opened via the 'Generate Script' are editable.
3. On restore, ensure the query content is correctly loaded into the query tool when it is opened from tools like ERD.
2025-07-17 16:28:57 +05:30
Akshay Joshi fe2332f606 Fixed merge conflict issues. 2025-07-17 12:44:53 +05:30
Akshay Joshi d26b63fdf5 Use 'Drop' instead of 'Delete' for object commands to make destructive actions more deliberate. #8958 2025-07-16 18:02:24 +05:30
Rohit Bhati 770a0f27af Ensure that keyboard shortcuts are displayed in tooltips, context menus, and the main menu. #1923 2025-07-16 17:51:26 +05:30
Pravesh Sharma ced002a6ad Fixed an issue where json editor in result grid was crashing if null value is set in the json editor. #8907 2025-07-16 17:49:00 +05:30
Aditya Toshniwal 3aad58751a Fixed security vulnerabilities identified in the yarn.lock file. 2025-07-15 17:41:31 +05:30
Akshay Joshi 61a420c9fc Updated release note. 2025-07-15 11:52:36 +05:30
Khushboo Vashi 8c662424b2 Display a confirmation message for the server-side cursor transaction status when closing the query tool.
Resolve the pagination issue by fetching an additional row to determine the availability of the next record set when using a server-side cursor.
2025-07-15 11:51:14 +05:30
Grégoire Bellon-Gervais 13ade4c0b2 Enable the PKCE workflow for OAuth 2 authentication. #8941 2025-07-15 11:36:05 +05:30
Yogesh Mahajan 1195f14327 Improved the application restore which includes: #8901
1. Leverage rc-dock layout to restore the application state.
2. Move the save and load file endpoints to the file manager module.
3. Ensure that the order and layout of tabs is maintained on restore.
4. Persist the changed title of tabs on restore.
2025-07-15 11:21:57 +05:30
Aditya Toshniwal 65a35ab23d Fixed windows signature issue by passing SignTool using /S arg ISCC.exe instead of specifying the path in installer.iss 2025-07-14 15:12:29 +05:30
Aditya Toshniwal b31c8f78c5 Fixed windows signature issue and specify SignTool in installer.iss file instead of calling signtool directly 2025-07-14 10:57:46 +05:30
Akshay Joshi 82e6b57d04 1) Added new columns in pg_stats table.
2) Updated release note.
2025-07-10 19:11:33 +05:30
Aditya Toshniwal 1e4e00886a Fixed a windows build issue where uninstaller failed to sign. #8420 2025-07-10 18:55:36 +05:30
Jun 0fd7d0dedb Added support for setting a custom SESSION_DIGEST_METHOD in pgAdmin 4 to facilitate FIPS compliance. #7979 2025-07-10 16:10:31 +05:30
Anil Sahoo 0ebf78ca61 Fixed an issue in the Search Objects tool where selecting a node occasionally selected an incorrect node. #8675 2025-07-10 15:37:31 +05:30
Aditya Toshniwalandstephannn 60c8e5fe05 Fixed an issue where windows installer is not signing tmp files generated by InnoSetup. #8420
Co-authored-by: stephannn <stephannn@users.noreply.github.com>
2025-07-10 15:35:02 +05:30
Akshay Joshi 1d68074a59 Fixed macros test cases when run on more than one server. 2025-07-09 16:01:51 +05:30
Akshay Joshi 8723896da0 Updated Python and JavaScript dependencies. 2025-07-08 18:50:32 +05:30
Akshay Joshi e4f17e5a6c Ensure that pgAdmin 4 is compatible with PG/EPAS v18. #8828 2025-07-08 18:34:39 +05:30
Ethan Bayliss 454ba52c88 Update zstd library link to 1.5.7 in Dockerfile 2025-07-03 11:57:40 +05:30
Akshay Joshi d5c0fac885 Revert "Javascript dependency: Bump pbkdf2 from 3.1.2 to 3.1.3 in /web"
This reverts commit 385148cf6e.
2025-07-02 16:46:55 +05:30
Akshay Joshi 3f7683854b Remove some code for Python 3.8 2025-07-02 15:59:22 +05:30
dependabot[bot] 385148cf6e Javascript dependency: Bump pbkdf2 from 3.1.2 to 3.1.3 in /web 2025-07-02 15:58:11 +05:30
Khushboo Vashi f207818afa Implemented a server-side cursor to enhance performance when retrieving large datasets. #5797 2025-07-02 12:47:01 +05:30
Akshay Joshi 1280cf5108 Updated Python and Javascript dependencies. 2025-07-01 12:22:22 +05:30
Akshay Joshi a5714903ac Fixed an issue where the Query Tool’s 'Edit Options' menu was unresponsive when clicked. 2025-06-27 18:29:15 +05:30
Akshay Joshi dd0c0cd3e1 Updated release date in the release note. 2025-06-27 13:36:31 +05:30
Yogesh Mahajan 51d3fe54f3 Ensure proper error message shown if any error occurs while restoring psql tool. 2025-06-27 13:35:24 +05:30
Akshay Joshi 7c2b773ad1 Allow the user to set a master password if an error occurs while accessing the OS secret storage. 2025-06-25 17:11:52 +05:30
Aditya Toshniwal f3a87de967 Fixed terminal size detection issue in PSQL when opening multiple tabs rapidly. 2025-06-25 14:58:46 +05:30
Akshay Joshi 536191cef6 Downgrade selenium version, as latest version don't support urllib3 v2.5.* 2025-06-24 15:55:19 +05:30
Khushboo Vashi 43d70de5bb Reinstall Python packages regardless of their presence in the system-wide installation. 2025-06-24 15:50:45 +05:30
Yogesh Mahajan 6fab59a13c Ensure the generate script button in schema diff populates diff query in query tool. 2025-06-24 15:28:36 +05:30
Akshay Joshi 03f18d5242 Updated release note. 2025-06-23 18:08:27 +05:30
Akshay Joshi 66cddab4a4 Updated version for release v9.5 2025-06-23 15:57:53 +05:30
Akshay Joshi 3e9169b282 1) Upgrade urllib3 to 2.5.*
2) Fixed one issue for #3319
2025-06-23 15:55:26 +05:30
Aditya Toshniwal 77fa10304b Fixed a UI layout issue that occurred after upgrading from pgAdmin v9.2 when all tabs had been closed prior to the upgrade. #8830 2025-06-23 15:51:42 +05:30
Domenico Sgarbossa 68bd329da9 Italian translations for version 9.5 2025-06-23 11:34:16 +05:30
Libor M. 14e40cedca Czech translation for version 9.5 2025-06-23 11:33:52 +05:30
Akshay Joshi 6382f31f9a Updated message catalogs for v9.5 2025-06-19 16:48:36 +05:30
Dirk Heinrichs 44496a300e Add a flag to allow access to system Python packages on recent Linux distributions. #7173 2025-06-19 16:21:15 +05:30
Pravesh Sharma 08d250e5ef 1. Fixed issues reported while testing changes for editor preferences. #2659
2. Updated preferences docs.
2025-06-19 16:09:39 +05:30
Yogesh Mahajan f07eabedbe Ensure that restored query tool tabs display the correct title. #3319 2025-06-19 12:12:54 +05:30
Aditya Toshniwal 5df2c7686c Fix issues found while testing changes for preferences tab and search. #6743 2025-06-19 11:49:37 +05:30
Akshay Joshi 7946ee78f6 Ensure that Keyboard shortcuts for save and download actions should not called when their respective UI buttons are disabled. #8803 2025-06-17 16:19:41 +05:30
Akshay Joshi 335a39bc75 Updated JavaScript dependencies. 2025-06-16 18:57:56 +05:30
Macchiarch d50a7dbd1a Corrected the translation of "min"-> "minuti" 2025-06-16 11:12:10 +05:30
Akshay Joshi 6714bb114c Fixed an issue in SQL syntax highlighting where the same color was used for both variable names and datatypes. #8235 2025-06-13 16:55:54 +05:30
Pravesh Sharma cda498f779 Added support for customizing keyboard shortcuts in the Query Tool's Edit menu. #2659 2025-06-13 15:48:54 +05:30
Yogesh Mahajan 67c18cb082 Fix the SonarQube issues and issues reported during testing. #3319 2025-06-13 13:14:36 +05:30
Akshay Joshi 22fd919220 1) Added copyright header from the missing files.
2) Update release note.
3) Update Javascript dependecies.
2025-06-12 19:14:41 +05:30
Aditya Toshniwal 1e0e9c4f7d 1) Open preferences in a new tab instead of a dialog for better user experience. #6743
2) Add a search box to enable searching within the preferences tab. #2864
2025-06-12 19:03:54 +05:30
Rohit Bhati 814250aade Added role-based restrictions for editing server connections. #1947 2025-06-10 12:19:41 +05:30
Daniel Nylander 2e072baf72 Updated Swedish translation. 2025-06-09 19:15:11 +05:30
Akshay Joshi 7f22d6135a Added Swedish language in config.py 2025-06-09 16:58:08 +05:30
Daniel Nylander 331fd76b42 Adding Swedish translation 2025-06-09 16:52:45 +05:30
Akshay Joshi 1259d72643 Plugin workspace-tools is included by default starting from Yarn 4. 2025-06-09 11:57:02 +05:30
Akshay Joshi cab1bc3cb4 Update yarn to version 4. 2025-06-06 19:08:32 +05:30
Akshay Joshi 4cd331f0ca Fixed an issue where the Columns node was not visible under Catalog Objects. #8834 2025-06-06 12:34:20 +05:30
Akshay Joshi e4e2761fe3 Fixed an issue where data export using a query opened the wrong dialog type. #8808 2025-06-05 17:04:33 +05:30
Akshay Joshi 45653180ed Fixed an issue where data export using a query failed when the query contained a newline character. #8809 2025-06-05 16:58:10 +05:30
Yogesh Mahajan 68e559c613 Added support to preserve the workspace, query windows, and pgAdmin state during an abrupt shutdown or restart. #3319 2025-06-05 16:50:38 +05:30
Akshay Joshi c2ef9d06ca 1) Remove migrations folder from the exclude list of .pycodestyle file.
2) Fixed all the PEP8 issues in the migration files.
2025-06-04 12:36:42 +05:30
Rohit Bhati db5943bd8f Add a new permission to allow disabling "Change Password" feature for a pgAdmin role. #1926 2025-06-03 16:20:30 +05:30
Akshay Joshi b6f64c4ba4 Updated Python and JavaScript dependencies. 2025-06-03 13:40:47 +05:30
Akshay Joshi a3e43e4e97 Fixed an issue where utilities such as pg_dump and pg_restore failed to log error messages when required dependency files were missing. #7466 2025-06-03 13:33:58 +05:30
Allen HernandezandAllen Hernandez 0a2db9bc59 Supports JSON logging for gunicorn process within Docker. #8665
Co-authored-by: Allen Hernandez <2349718+AllenSH12@users.noreply.github.com>
2025-06-03 13:33:09 +05:30
Akshay Joshi 12b263c20b Changed the version of libzstd.so from 1.5.6 to 1.5.7 for Docker builds. 2025-06-03 12:55:12 +05:30
Aditya Toshniwal 4a4d4569ae Improved PL/PGSQL code folding and support nested blocks. #6118 2025-06-02 15:58:07 +05:30
Pravesh Sharma 3286b4e32f Fixed an issue in the query tool where using multiple cursors to copy text resulted in only the first line being copied. #8691 2025-05-30 14:45:48 +05:30
Khushboo Vashi 63f2c7fe00 Remove the reference to the DEPENDENCIES file from the macOS build. 2025-05-30 09:47:43 +05:30
Akshay Joshi 7504f6216a Fixed an issue where the Schema Diff Tool incorrectly reported differences due to variations in the order of the privileges. #8032 2025-05-29 19:08:56 +05:30
Khushboo Vashi 58715daf10 Remove all references to the DEPENDENCIES file. 2025-05-29 16:01:56 +05:30
Khushboo Vashi 1ad8736d72 Removing the script for managing project dependencies, as SBOM is already in use. 2025-05-29 15:22:30 +05:30
Akshay Joshi 79ec042e0d Updated Python and Javascript dependencies. 2025-05-29 13:37:21 +05:30
Aditya Toshniwal 7c74b7cdb7 - Pin Electron to v35.4.0 as the v36 is not working on many OS.
- Pin html-to-image to v1.11.11 as latest version breaks ERD image downloads.
2025-05-27 13:02:11 +05:30
Khushboo Vashi e8826863e0 Updated version for v9.4 2025-05-26 18:47:53 +05:30
Pravesh Sharma 4f79deac0b Fixed CSS issue found during testing of issue 6510 2025-05-26 18:32:07 +05:30
Akshay Joshi 695166bde5 Revert "Trying to fix pip error on Windows build machine. pin the pip version to 24.2"
This reverts commit 9ce0e77e61.
2025-05-26 18:10:31 +05:30
Akshay Joshi 9ce0e77e61 Trying to fix pip error on Windows build machine. pin the pip version to 24.2 2025-05-26 13:28:28 +05:30
Libor M. 0b911bf58c Updated Czech translation for v9.4. 2025-05-26 11:14:34 +05:30
yuki 15ca0ba1b6 Updated Portuguese (Brazilian) translation for v9.4 2025-05-26 11:13:57 +05:30
Aditya Toshniwal c6183c9d03 Fixed more issues found while testing changes for large file download. #3369 2025-05-24 15:25:07 +05:30
Aditya Toshniwal dfd896db10 Fixed an issue where pgAdmin failed to focus when previously unfocused and then quit. #8760 2025-05-24 15:23:17 +05:30
yuki ac8f8fb0b0 Updated Portuguese (Brazilian) translation for v9.4
Added new translations there were missing.
2025-05-23 11:31:42 +05:30
Domenico Sgarbossa d6ae6b2773 Updated Italian translation for v9.4 2025-05-22 18:51:25 +05:30
Akshay Joshi a42f789ff0 Fixed an issue where correct error message not displayed when sql statement contains Arabic letters. #7926 2025-05-22 18:49:42 +05:30
Aditya Toshniwal 5d8ec6e5b0 Fix issues found while testing changes for large file download. #3369 2025-05-22 16:41:17 +05:30
Akshay Joshi e711a1bbc6 Updated message catalogs for v9.4 2025-05-22 15:58:58 +05:30
Pravesh Sharma b6e1223e88 Fixed an issue where the result grid slowed down when any column contained a large amount of data. #6510 2025-05-21 18:57:47 +05:30
Akshay Joshi 28921be00f Updated Python and Javascript dependencies. 2025-05-20 14:07:38 +05:30
Anil Sahoo 4e8f29f328 Fixed an issue where light theme briefly appears when pgAdmin loads or tools open, even when a dark or system UI theme is preferred. #8711 2025-05-20 10:36:29 +05:30
Aditya Toshniwal 126e1fb53d Enabled large file downloads for desktop users within the query tool. #3369 2025-05-14 15:30:17 +05:30
Allen HernandezandAllen Hernandez ebf4963758 Fixes venv notations for web build
2) Removes venv notation from web bundling directions
3) Add venv notation after activation

---------
Co-authored-by: Allen Hernandez <2349718+AllenSH12@users.noreply.github.com>
2025-05-14 14:17:13 +05:30
Akshay Joshi eece396b30 Fixed an issue where the PSQL tool would hang when the database encoding was set to SQL_ASCII and certain commands were executed. 2025-05-14 14:05:29 +05:30
Anil Sahoo abcb5f8830 Fixed an issue where the options key was not working as expected in the PSQL tool. #6968 2025-05-14 13:46:16 +05:30
Akshay Joshi ebb4c9994f Update Python and Javascript dependencies. 2025-05-13 12:59:25 +05:30
Aditya Toshniwal 971eee32ea Update MUI from v6 to v7. 2025-05-13 12:51:00 +05:30
Rohit Bhati af84d6b1e0 Handle result grid data changes in View/Edit Data mode by automatically reconnecting to the server if a disconnection occurs. #8608 2025-05-13 11:35:58 +05:30
Koren Peretz 2cb69f09b9 Update the Dockerfile to use UID 5050 instead of the pgadmin user to prevent Kubernetes deployments from failing when securityContext.runAsNonRoot is set to true without specifying securityContext.runAsUser. 2025-05-09 15:24:42 +05:30
Akshay Joshi 0403079a4b 1) Fixed an issue where the Cancel button did not work when attempting to delete a user from the User Management.
2) Fixed an issue where automatic user creation via LDAP failed if an existing Internal user with the same username was already present.
2025-05-09 13:28:23 +05:30
Anil Sahoo 97984eb3ec Fix an issue where, after a database disconnection, the server would disconnect, and the reconnect dialog would repeatedly appear when clicking the Execute button. #8607 2025-05-08 15:48:49 +05:30
Aditya Toshniwal c46fd30446 Fix JS test cases failing because of latest version of @tanstack/react-virtual. 2025-05-07 17:07:56 +05:30
Rohit Bhati ff8a301f6a Enhance contrast for selected and hovered items in the Object Explorer to improve visibility and accessibility. #8595 2025-05-07 12:33:04 +05:30
Aditya Toshniwal 27bd28ee97 Replace Grid with Grid2 as the former is deprecated by MUI 2025-05-06 19:39:33 +05:30
Akshay Joshi fb4d25d907 1) Updated Python and JavaScript dependencies.
2) Updated release note.
2025-05-06 19:07:29 +05:30
Pravesh Sharma ca6f52e7c7 Fixed issues related to column range selection using shift + click. #8713 2025-05-06 15:52:20 +05:30
Yogesh Mahajan 3bdeb9ace1 Implement API fetch error display for select dropdown. #8668 2025-05-06 10:52:42 +05:30
Akshay Joshi f64b59e735 Updated release note. 2025-05-05 14:59:48 +05:30
Pravesh Sharma 5d78f4a89f Fix the issue where an error is displayed when a table is dropped while a query is running. #6564 2025-05-02 14:12:06 +05:30
Anil Sahoo 695f870ce1 Fixed an issue where the query tool returns "cannot unpack non-iterable Response object" when running any query with a database name change. #8607 2025-05-02 10:57:43 +05:30
Akshay Joshi 593b111fdf Add all missing options to the Import/Export Data functionality, and update the syntax of the COPY command to align with the latest standards. #8583
Add support for exporting table data based on a custom query. #8681
2025-04-30 17:51:04 +05:30
Aditya Toshniwal 82efd188c4 Fix pep8 issues from the last commit 2025-04-30 15:38:44 +05:30
Aditya Toshniwal 9df7275429 Add a python script to parse a release note file and convert to Email, Markdown and HTML formats required for pgAdmin release 2025-04-30 15:31:20 +05:30
Akshay Joshi 829876c2e0 1) Sorted requirements.txt alphabetically.
2) Remove packages for Python 3.8.
3) Update JavaScript dependencies.
4) Update Python packages.
2025-04-30 12:43:02 +05:30
Akshay Joshi 41ba6bd1f4 Delete .python-version file 2025-04-29 15:07:31 +05:30
Khushboo Vashi aa282711f8 Try to fix the Fedora build failure. 2025-04-28 14:33:46 +05:30
Akshay Joshi 5a501603ac Updated version for v9.3 2025-04-28 11:00:39 +05:30
Libor M. e7f8cb4ea3 Czech translation for version 9.3 2025-04-28 10:58:35 +05:30
Pravesh Sharma 78d9aa5b76 Fixed issue found while testing PostGIS spatial type constructor support. #2256 2025-04-25 11:13:18 +05:30
Domenico Sgarbossa 038029eb2d Italian translation for v9.3 2025-04-24 18:43:33 +05:30
Aditya Toshniwal a14cc1bd77 Updated message catalogs for v9.3. 2025-04-24 16:19:42 +05:30
Yogesh Mahajan 33389fc48e Fix feature test failures for PG servers. 2025-04-24 15:57:48 +05:30
Aditya Toshniwal d468c16ca2 Fixed more issues found while testing role permissions feature. #7310 2025-04-23 15:47:51 +05:30
Khushboo Vashi fcf7cf5eb2 Update release notes. 2025-04-23 15:41:43 +05:30
Pravesh Sharma b08e90ea88 Add support for type constructors for PostGIS spatial types. #2256 2025-04-23 15:35:42 +05:30
Yogesh Mahajan 75dc42cf24 Allow OAuth 2 login using the username claim if the email is absent from the user profile. #8652 2025-04-23 15:21:25 +05:30
Aditya Toshniwal ec3d142ad9 Fix issues while testing role permissions feature. #7310 2025-04-21 15:14:18 +05:30
Aditya Toshniwal 280f0b0038 Revert "Rebase fork pgadmin-org/react-data-grid to get latest changes and update pgAdmin package.json"
It requires React 19.

This reverts commit 7307c52250.
2025-04-21 15:12:27 +05:30
Aditya Toshniwal 7307c52250 Rebase fork pgadmin-org/react-data-grid to get latest changes and update pgAdmin package.json 2025-04-21 13:48:43 +05:30
Aditya Toshniwal e8cb962890 Add Cache-Control no-cache,no-store,must-revalidate header to dynamically generated utils.js file. #3688 2025-04-16 11:23:35 +05:30
Akshay Joshi 934f17c65e Ensure that the server list is alphabetically sorted in the Query Tool/PSQL workspace. #8636 2025-04-15 16:12:49 +05:30
Akshay Joshi 55f36912f9 Updated JavaScript dependencies. 2025-04-15 11:52:44 +05:30
Akshay Joshi 7b1ad5fa67 Fixed an issue where changes to foreign key constraints were not detected in the schema diff. #8627 2025-04-15 11:46:12 +05:30
Aditya Toshniwal 7d8a915ee0 Add support for custom roles and role permissions management in pgAdmin. #7310 2025-04-15 11:25:31 +05:30
Aditya Toshniwal 8b4df8beb1 Change the shortcut for canceling a running query as it conflicts with the shortcut to open a new query tool. #8628 2025-04-14 13:46:59 +05:30
Aditya Toshniwal f98a74b526 Fixed an issue where the user management tab is not opening in the classic layout. #8651 2025-04-14 13:32:05 +05:30
Aditya Toshniwal 8a0eae2bb0 Fixed an issue where drag and drop function with no parameters does not work. #8613 2025-04-14 12:57:26 +05:30
Aditya Toshniwal 18f47a59c5 Fixed an issue where the query tool went blank when converting history dates to the appropriate locale format. #8632 2025-04-14 12:43:05 +05:30
Akshay Joshi 31b1af2f84 Fixed an issue where filtering on a view caused an error. #8630 2025-04-09 19:00:32 +05:30
Akshay Joshi 4c56e49c66 Updated Javascript dependencies. 2025-04-09 11:56:07 +05:30
Rohit Bhati 2de2c30545 Fixed an issue where Ctrl/Cmd+A in cell editor would select all rows. #8572 2025-04-08 18:29:05 +05:30
Kijong Han 51897dc804 Fixed an issue where shift + click on rows/columns for range selection did not work in the query tool data output window. #5266 2025-04-08 12:43:05 +05:30
Akshay Joshi bbef00a151 Fixed an issue where the scroll position in the Object Explorer was not retained when switching workspaces. #8497 2025-04-07 13:31:00 +05:30
Akshay Joshi 627aa5d695 Added ability to use SQL in the 'DB Restriction' field. #2767 2025-04-04 15:53:12 +05:30
Akshay Joshi 0d8b3c4389 Ensure that graph data is updated even when the Dashboard tab is inactive. #8556 2025-04-04 11:39:37 +05:30
Khushboo Vashi 8031c35160 Fixed an issue where the debugger hangs when stepping into nested function/procedure. #8443 2025-04-03 19:20:28 +05:30
Akshay Joshi 8cf14222ff Updated Javascript dependencies. 2025-04-03 19:07:02 +05:30
Mike Christensen 10b15b3986 Added support for font ligatures. #8629 2025-04-03 19:06:40 +05:30
Aditya Toshniwal 73fefb8603 Fixed an issue where query tool is crashing on macOS 15.4 due to a locale issue. #8623 2025-04-02 15:15:23 +05:30
Akshay Joshi af6c1a24cf 1) Upgraded Gunicorn to version 23.0.0 to address a security vulnerability present in Gunicorn.
2) Resolved an issue where an empty PSQL panel would open if the psql utility was not found in the binary path.
2025-04-01 16:33:50 +05:30
Aditya Toshniwal cfca6f6218 Fixed issues while testing multiple popups issue. #8316 2025-03-31 14:28:56 +05:30
Akshay Joshi c001b7b50a Fixed an issue where closing the pgAdmin main window did not automatically close the View Logs and Configure Runtime dialogs. 2025-03-31 12:59:03 +05:30
Akshay Joshi bd259cda42 Updated version for release v9.2 2025-03-31 11:34:12 +05:30
Akshay Joshi 75be0bc22d Fixed a remote code execution issue in the Query Tool and Cloud Deployment (CVE-2025-2945). #8603 2025-03-31 11:33:37 +05:30
Akshay Joshi 1305d9910b Fixed an XSS vulnerability issue in the Query Tool and View/Edit Data (CVE-2025-2946). #8602 2025-03-31 11:30:26 +05:30
Libor M. 6a850fff10 Czech translation for version 9.2 2025-03-31 11:10:19 +05:30
Aditya Toshniwal 6b9f002366 Fixed an issue where user management tab was not focussed when opened from a non default workspace. #8574 2025-03-28 15:31:51 +05:30
Domenico Sgarbossa 0eb8d6c8d6 Italian translation update for v9.2 2025-03-28 12:18:00 +05:30
Aditya Toshniwal 8a2a5fda1d Update release notes. 2025-03-28 10:42:00 +05:30
Rohit Bhati a2b35b35f3 Fixed an issue where the query tool data grid did not respect the default value for columns of domain type when the domain had a default value. #8483 2025-03-28 10:38:30 +05:30
Aditya Toshniwal f250f5de5e Fixed an issue where delete/rename was done on the wrong file after sorting in Storage Manager. #8597 2025-03-28 10:31:11 +05:30
Akshay Joshi fa60ab0f6a Updated message catalogs. 2025-03-27 19:23:57 +05:30
Akshay Joshi 1d3e0a4455 Revert the fix for #8006 2025-03-27 12:32:46 +05:30
Aditya Toshniwal 82c5febde6 Font family should fallback to Source Code Pro if not valid. #392
Update user management docs.
2025-03-27 11:03:39 +05:30
Akshay Joshi 0914ec24ad Updated release note. 2025-03-26 15:54:52 +05:30
Aditya Toshniwal 57d757d4de Fixed an issue where pgAdmin should fallback to main screen if the last opened screen is disconnected. #8362 2025-03-26 09:21:53 +05:30
Akshay Joshi 7edaac1da7 1) Updated Security.md file.
2) Updated release note.
2025-03-25 12:40:46 +05:30
Aditya Toshniwal 9ab451e163 Open user management in a separate tab instead of a dialog to enhance UI/UX. #8574 2025-03-25 12:33:49 +05:30
jackfromeast 213be44e29 Create SECURITY.md file. 2025-03-25 12:32:10 +05:30
Anil Sahoo cb597d0acb Fixed an issue where the upgrade_check API returned an unexpected keyword argument 'cafile' due to changes in the urllib package supporting Python v3.13. #8577 2025-03-25 11:44:23 +05:30
Akshay Joshi badc6f33bf Updated JavaScript Dependencies. 2025-03-24 17:42:37 +05:30
Akshay Joshi a5993549b8 Disable controls for shared servers that cannot be edited by the users. 2025-03-24 14:30:56 +05:30
Mike Christensen 13b44fffc7 Add an ability to configure the font family for SQL editors. #392 2025-03-24 11:08:49 +05:30
Akshay Joshi fc1a1610a3 Ensure the newly added parameters in the server dialog are incorporated into the Import/Export Servers functionality. #8514 2025-03-20 15:49:43 +05:30
Rohit Bhati 47eca9a19c Fixed an issue where updating the grantee was not correctly applying the privileges. #8546 2025-03-20 15:35:46 +05:30
Akshay Joshi f635df6ccf Added support for post-connection SQL execution, which will be run automatically on each connection made to any database of the server. #4503 2025-03-18 16:54:38 +05:30
Yogesh Mahajan b2669930f5 Ensure that modal dialogs are not triggered more than once to avoid duplicates. #8316 2025-03-18 15:58:16 +05:30
Akshay Joshi f25cde8c5f 1) Unpin the electron version for RHEL 8 as respective issue is fixed.
2) Updated Javascript dependencies.
2025-03-18 10:27:21 +05:30
Rohit Bhati 797bdb8696 Fixed directory owner update & UI issues. #8034 2025-03-17 12:22:06 +05:30
Akshay Joshi c80be9b3a3 1) Align cancel query icon properly on the Dashboard.
2) Update release note.
2025-03-13 16:37:24 +05:30
Pravesh Sharma 84e2b844e0 Removed the pre-install script from the Red Hat build function as it was causing a No such file or directory warning during the update. #8006 2025-03-13 16:35:21 +05:30
Rohit Bhati be534be674 Update the stop/terminate icon at all the places for better UX. #8473 2025-03-12 12:31:23 +05:30
Chris Bandy 846d0eafe6 Change session files garbage collection strategy. #8335
Currently GC for session files is done by the /misc/cleanup endpoint which requires browser UI
to be running. With this change, the pgAdmin server will open a separate thread at a fixed frequency
which will take care of GC independently.
2025-03-11 16:32:30 +05:30
Akshay Joshi cd179a3e9f Updated release note. 2025-03-11 16:17:58 +05:30
Lau Ernebjerg Josefsen 2d10e95311 Add an option to load/replace the servers.json file on each container startup. #8540 2025-03-11 16:14:06 +05:30
Pravesh Sharma f9af74529c Fixed an issue where geometries in the geometry viewer will render partially when the container was resized. #8462 2025-03-10 18:44:24 +05:30
Akshay Joshi 8c9ab2afd9 Update Javascript dependencies. 2025-03-10 17:22:36 +05:30
Yogesh Mahajan 708a570ba0 On the Ubuntu runner, uninstall the default PostgreSQL version before installing any other PostgreSQL version. 2025-03-10 15:39:41 +05:30
Akshay Joshi 074db05f7a Updated release note. 2025-03-10 11:42:43 +05:30
Pravesh Sharma 73b437c0f5 Added support to automatically open a file after it is downloaded in the desktop mode. #4194 2025-03-10 11:38:13 +05:30
Rohit Bhati df5dced926 Change icon buttons to show tooltip even when disabled. #8449 2025-03-08 11:48:08 +05:30
Rohit Bhati 1590df8dfd Change the stop/terminate icon at all the places for better UX. #8473 2025-03-07 11:26:13 +05:30
Akshay Joshi 5ee33cf162 Fixed an issue where the PSQL terminal displays keyname for non alphanumeric keys. #8437 2025-03-05 18:31:49 +05:30
Aditya Toshniwal 7a25da9b06 Add support for restoring plain SQL database dumps. #5871 2025-03-05 18:22:44 +05:30
Akshay Joshi d7faa85338 Pin the electron version to 33.3.2 for RHEL 8 2025-03-05 12:37:50 +05:30
Akshay Joshi cf2328d2cd Fixed PEP8 2025-03-04 15:49:41 +05:30
Akshay Joshi 4e52a8664c Updated Javascript dependencies. 2025-03-03 19:00:59 +05:30
Rohit Bhati 7bae1eb663 Added support for creating Directory nodes in EPAS. #8034 2025-03-03 18:45:21 +05:30
Akshay Joshi 4791897578 Fixed an issue where the Schema Diff was not displaying the difference query when a table had a UNIQUE NULLS NOT DISTINCT constraint. #8479 2025-03-03 18:39:09 +05:30
Aditya Toshniwal 1cbdb435df Update the README.md file based on latest requirements. #8345 2025-02-25 17:06:49 +05:30
Akshay Joshi b59495603a 1) By Default 'Open in a new tab?' should be false.
2) Updated version for release v9.1
3) Updated the release note
2025-02-25 16:50:45 +05:30
Akshay Joshi 58f86a3c32 Updated Javascript dependencies. 2025-02-25 11:38:37 +05:30
Akshay Joshi adcf089357 Updated release note. 2025-02-21 15:00:01 +05:30
Yogesh Mahajan 636821f2ac Added an option to open the file in a new tab within the query tool. #1235 2025-02-21 14:45:41 +05:30
Pravesh Sharma b983b094a3 Fixed an issue where drop-down menus were hidden behind the dock. #8439 2025-02-20 12:12:29 +05:30
Akshay Joshi 53077b6c04 1) Updated chart.js to 4.4.7
2) Fixed an issue where Default Workspace and Preferences button is disabled when
   selecting any node from object explorer.
2025-02-19 16:12:17 +05:30
Aditya Toshniwal a0ddfad655 Fixed an issue where deleting rows in the query tool would delete all rows in the table when 'Select All Remaining Rows' was used. #8460 2025-02-18 17:34:24 +05:30
Yogesh Mahajan 39f92ffae4 Fixed GUI test cases failures on Github actions. 2025-02-18 14:44:32 +05:30
Akshay Joshi 84a5467a5e Updated Sphinx to 7.4.7 2025-02-18 13:34:20 +05:30
Akshay Joshi 35d6277f00 Rename all '10_plus' folders to 'default' as modulewise RESQL tests are not running. 2025-02-18 13:07:03 +05:30
Pravesh Sharma 85290d4e61 Fixed an issue where the column order displayed was incorrect for exclusion constraints with multiple columns. #8430 2025-02-18 11:57:42 +05:30
Yogesh Mahajan 48a26e8979 Ensure the saved passwords are decrypted with the correct encryption key for external authentication in server mode. #8435 2025-02-18 11:54:57 +05:30
Akshay Joshi 53a8cac7f8 Update Javascript dependencies. 2025-02-17 18:37:48 +05:30
Akshay Joshi 96128f6a15 1) Enable the ability to close the 'Welcome' tab in the Query Tool/PSQL Workspace. #8436
2) Fixed an issue where the User Management and Change Password dialogs were hidden when selecting a menu while a workspace other than 'Default' was active. #8418
3) Revert the change of OS from Ubuntu 22.04 to 24.04 for github action failure.
2025-02-17 18:28:56 +05:30
Anil Sahoo e2a80b2465 Fixed an issue where pasting text containing JSON data into the query tool grid would result in incorrect parsing. #8296 2025-02-17 17:41:05 +05:30
Pravesh SharmaandAditya Toshniwal 6dd91c8277 Fixed an issue where the ERD tool fails to open a saved file containing parent-child relationship within the same table. #8389
Fixed an issue in ERD where link notation end-points were not rendering occasionally.

---------

Co-authored-by: Aditya Toshniwal <aditya.toshniwal@enterprisedb.com>
2025-02-17 17:37:30 +05:30
Michal Charemza 83ade5dcc2 Update the query that fetches roles to be faster with many roles.
This changes the query that fetches roles from using the
pg_catalog.shobj_description function to using an explicit join on
pg_catalog.pg_shdescription. In my specific case, in a production system with
over 20k roles, this reduces the query time down from 8 minutes(!) down to
~40ms. Just in case it was a locking issue, I did use pg_activity to
investigate locks, and nothing was being blocked during the 8 minutes.

This fixes a problem that exists only for certain users, and specifically in my
case where the user that runs the query is themselves a member (directly and
indirectly) of a high number of roles. Running the existing query as a user
that has a low number of roles (and specifically, the master user in an AWS RDS
database), the existing query is fairly performant.

My best explanation as to the performance difference comes from the definition
of shobj_description
https://github.com/postgres/postgres/blob/2a8a00674e973dec4d7d74d5e16c7d7cdedf2be5/src/backend/catalog/system_functions.sql#L303-L312.
Each time it's called it runs a query against pg_shdescription and pg_class,
and so in my case runs 20k times, compared to the equivalent of once when doing
the explicit join on pg_shdescription. It should also be noted that in my case
pg_class is quite big - currently about 500k rows (although it has grown to ~5
million in the past, but that was borderline a mistake).

See https://github.com/pgadmin-org/pgadmin4/pull/8457#issue-2853052114 for
EXPLAIN ANALYZE results of the existing query and the updated query.
2025-02-17 17:20:28 +05:30
Akshay Joshi 5c257fe1b9 Change the Operating System from Ubuntu 22.04 to 24.04 to test whether it fixes the github actions. 2025-02-17 12:38:28 +05:30
Yogesh Mahajan 740a50680e Fix the following SonarQube issues:
1. Do not use the Array index in keys
2. Visible, non-interactive elements with click handlers must have at least one keyboard listener.
3. Add replacement fields or use a normal string instead of an f-string.
4. Add a parameter to the parent lambda function
2025-02-13 11:56:10 +05:30
Matthias Wilhelm 706eec0d5b Fix wrong parameter description for Password Exec Command
The documentation mentions that `%HOST%` can be used as a replacement parameter for the Password Exec Field in the Advanced tab of the Server Dialog, but the parameter is actually `%HOSTNAME%`:
2025-02-12 18:12:02 +05:30
Akshay Joshi f63190dc93 Fixed an issue where pgAdmin does not support pg_vector column length/precision. #8181 2025-02-12 16:14:31 +05:30
Akshay Joshi 58bb14253e Revert changes from the previous commit to restore the 'Object Explorer' title. 2025-02-11 20:18:10 +05:30
Akshay Joshi eb7c3ef361 Workspace Layout Update - Enhanced Query Tool and PSQL Behaviour:
With these changes, the Query Tool and PSQL tabs will now open in the same active workspace where the action is initiated.
2025-02-11 15:36:03 +05:30
Pravesh Sharma 2c37ff2893 Fixing following SonarQube Issues:
1. Ternary operators should not be nested.
2. "Exception" and "BaseException" should not be raised.
2025-02-11 12:03:43 +05:30
Akshay Joshi a30a722e11 Update release note. 2025-02-10 15:07:35 +05:30
Aditya Toshniwal 650a15beec Fixed an issue where the query tool was not treating IDENTITY columns as columns with default values when inserting new rows. #8341 2025-02-10 15:05:09 +05:30
Pravesh Sharma 2fc65589c8 Add support for one to one relationship in the ERD tool. #5128 2025-02-10 14:40:20 +05:30
Akshay Joshi bf7f8cdd73 1) Added missing GLOBALLY_DELIVERABLE config parameter in the config.py from the last commit.
2) Fixed API test cases for DBMS_JOB_SCHEDULER
2025-02-07 13:36:11 +05:30
Igor Serko ae76ea3585 Fixed Docker image entrypoint.sh email validation. #8410
Introduces a GLOBALLY_DELIVERABLE variable so that it can be passed to the email validator library
and ultimately allowing the email admin@localhost to be valid, as long as False is passed in.

Also:
* Adjusted the indentation of a command above it in the entrypoint.sh
* Added printing out the output of the validation library so that we can better find what the actual issue is
2025-02-07 12:34:23 +05:30
Akshay Joshi 0b46bdf901 1) Updated Javascript and Python dependencies.
2) Added release note for v9.1
2025-02-07 11:52:08 +05:30
Khushboo Vashi b02e210c68 Python v3.8 does not support parenthesized context expressions. 2025-02-06 14:42:29 +05:30
Aditya Toshniwal e6d2334753 Pin Electron version to 33.3.2 as the versions above it fails to start on RHEL 8/Rocky 8 2025-02-05 19:10:39 +05:30
Akshay Joshi 9f4ce1e7d1 Use HKA registry key instead of HKLM/HKEY_LOCAL_MACHINE in Windows installer.iss.in file. 2025-02-05 15:47:59 +05:30
Akshay Joshi efd0dd2ac0 1) Fixed an issue where selecting all rows and copying using shortcut only, the first attempt fails to copy.
2) Fixed an issue where a single row is copied first and then clicked on "Select All", the previously copied row's highlight color changes.
3) Fixed an issue where non-shared servers are visible in the Existing Servers list on the Welcome page and New Connection dialog.
2025-02-05 10:26:51 +05:30
Akshay Joshi b90a390d5c 1) Run the uninstaller first only if the v8 version is already installed.
2) Delete the MyAppVersion key from the Windows registry during the installation or upgrade.
3) Remove the logic that checks if a 32-bit or 64-bit version of the installer is already installed.
2025-02-05 10:17:46 +05:30
Akshay Joshi 2f495006ea 1) Fixed an issue where the server shows disconnected on the Welcome page, even after the password was provided.
2) Updated the release notes and version information.
2025-02-03 14:26:57 +05:30
Pravesh Sharma dd09986f71 Fixed an issue where quotes were missing in the CREATE script for the tablespace. #8408 2025-02-03 11:50:50 +05:30
Libor M. 41873de29e Czech translation for version 9.0 2025-02-03 10:31:31 +05:30
Akshay Joshi 92c9e59c1f 1) Update version for v9.0
2) Update message catalogs for v9.0
2025-01-30 18:16:05 +05:30
Akshay Joshi d5101b7568 1) Disable PSQL Workspace in Server mode.
2) Fixed an issue where empty binary path throwing an error instead of proper error message.
2025-01-30 17:59:18 +05:30
Anil Sahoo e7888c5265 Fixed an issue where the server without a saved password did not persist the user's latest filter dialog input after disconnection. #6044 2025-01-30 11:10:25 +05:30
Yogesh Mahajan ebeb768a53 Ensure the double-click event is listened to even if the user clicks after the label. 2025-01-30 10:26:11 +05:30
Akshay Joshi 228156d0b6 1) Fixed an issue where the ad-hoc server with SSH Tunnel repeatedly prompted for the password.
2) Fixed an issue where the SSH Tunnel password was not being saved in the External Database if its encoded length exceeded 64 characters.
3) 'Save Password' check box should be hidden for SSH Tunnel password on the Welcome page.
2025-01-29 19:43:23 +05:30
Akshay Joshi 1607875a08 Fixed issues for Workspaces:
1) Unable to add ad-hoc server with External Database.
2) Server list not updating when password is saved on the Welcome page.
3) Icons for Query Tool and PSQL missing on the Welcome page.
4) Error when removing connection parameters.
2025-01-29 17:14:25 +05:30
Akshay Joshi 707d0372ba Update JavaScript Dependencies. 2025-01-29 11:53:58 +05:30
Akshay Joshi 1317e5a921 Change the logic of setval function, so that the next nextval of sequence will return exactly the specified value. #3273 2025-01-28 17:52:21 +05:30
Kristof Hauser 1e00611792 Add support for OAuth2 profile array response, which also takes care of the GitHub Private Email ID issue. #8391 2025-01-28 16:53:56 +05:30
Akshay Joshi 22b7ae6cdc 1) Fixed an issue where loadingText message is not shown in SchemaView.
2) Fixed SonarQube Bugs and Code Smells.
2025-01-24 13:58:21 +05:30
Akshay Joshi 684818def1 Ensure that the Server List on the Welcome page is refreshed only when there are changes in the Object Explorer. 2025-01-23 14:51:39 +05:30
Yogesh Mahajan 5ee0328063 Fix an error during logout from pgAdmin when using OAuth2 authentication with the query tool open. 2025-01-22 21:05:06 +05:30
Akshay Joshi ab98e5f6bb Update Python and Javascript dependecies. 2025-01-22 19:49:35 +05:30
Akshay Joshi 84a8a522e3 1) Fixed an issue where Default Privileges and Privileges not working correctly. #8369
2) Fixed <br/> tag visible issue.
2025-01-22 19:40:13 +05:30
Anil Sahoo 133a59c71b Fixed an issue where filter dialog save fails when the PostgreSQL server/database connection is lost. #6044 2025-01-22 10:06:56 +05:30
Aditya Toshniwal 168aaa227a Update the server list on welcome page when workspace is changed to get the latest server connection info. #7708 2025-01-20 18:45:51 +05:30
Suall1969 74e776ba21 Psycopg binary packages are now available for macOS version < 14.0. 2025-01-20 17:27:08 +05:30
Khushboo Vashi 90eff9a596 Pass an empty string for the table cell tooltip if the cell value is an object. 2025-01-20 16:53:01 +05:30
Akshay Joshi cd86ce08cf Fixed an issue where pgadmin cannot install into path with non ASCII characters. #5204 2025-01-20 16:04:07 +05:30
Akshay Joshi 7e20bf5b75 Remove function call IsPathValid to test non-ascii characters in the path for Windows installer. 2025-01-20 12:25:16 +05:30
Yogesh Mahajan 98f6b1ff12 Ensure the double-click event is not ignored in the browser tree. 2025-01-20 11:21:21 +05:30
Akshay Joshi a410b15e30 Fixed an issue where <br/> tag is visible in the error message when delete any database and it is in use. 2025-01-17 17:16:36 +05:30
Khushboo Vashi 72a3ed9068 Do not display the tooltip if the table cell value is an object. 2025-01-17 15:32:11 +05:30
Rohit Bhati 1be0ff13db Update prop on confirmDelete to fix TypeError. #6513 2025-01-17 14:53:51 +05:30
Aditya Toshniwal 1216f075ce Fixed an issue where PSQL tool is not opening if database name have HTML characters in the name. #8365 2025-01-17 14:53:24 +05:30
Akshay Joshi 99e1f005fc Update Python version to 3.13 2025-01-15 13:44:34 +05:30
Akshay Joshi bf69b16f1f 1) Added the MAINTAIN privilege for PostgreSQL version 17 and above. #8332
2) Updated JavaScript Dependecies.
2025-01-14 14:18:07 +05:30
Khushboo Vashi 36df6d5c8a Fix an issue where using the binary cursor, utf-8 decode error comes up. #8199 2025-01-13 12:23:50 +05:30
Aditya Toshniwal a9974b418c Fixed an issue where cell background color is removed when copied in query tool data output grid. #8273 2025-01-09 15:37:20 +05:30
Rohit Bhati de6fbe7725 Fixed a button focus issue found while testing the dialog button changes. #6513 2025-01-08 17:22:11 +05:30
Khushboo Vashi 172edaa227 Fix an issue where wrong information is shown after using the filter on the Dashboard> State tab. #8320 2025-01-08 12:43:50 +05:30
Akshay Joshi bac50e10f0 1) Fixed an issue where User Language is not getting changed.
2) Fixed an issue where Import/Export Server menu is disabled.
3) Update few JavaScript dependencies.
2025-01-07 13:55:02 +05:30
Yogesh Mahajan b9c7e7e9af Remove the option "With no data (concurrently)" from Refresh MATERIALIZED VIEW context menu. #8309 2025-01-07 12:22:07 +05:30
Akshay Joshi 8c461ffb86 Reverted changes for formatted exception message. #8165 2025-01-06 17:46:34 +05:30
Akshay Joshi 1934a75eee Updated Javascript packages. 2025-01-06 12:23:10 +05:30
Akshay Joshi 90cdeeff0a Modified logic for formatted exception message. #8165 2025-01-03 20:56:47 +05:30
Yogesh Mahajan 6d45dd4491 Ensure master password pop up is not shown on setting MASTER_PASSWORD_REQUIRED to false. #8299 2025-01-03 20:50:32 +05:30
Rohit Bhati b22bfdf74b Only the python version should be shown in the about dialog. #8249 2025-01-03 20:49:56 +05:30
Aditya Toshniwal 6dab60d9e4 Fixed an issue where copying query tool output cell is not working if any SQL text is selected. #8273
Rebase react-data-grid fork to latest.
2025-01-03 14:03:33 +05:30
Anil Sahoo 657bf08fb8 Fixed an issue where keys like Backspace, Enter, and Input keys were shown as text in the PSQL tool. #6968 2025-01-03 12:22:24 +05:30
Akshay Joshi ff1d9e20d1 Fixed an issue where error message from the database server need space between two sentences. #8165 2025-01-02 18:14:51 +05:30
Yogesh Mahajan d03553be7a Fix the error occurring while loading preferences on startup. #8256 2025-01-02 18:12:24 +05:30
Yogesh Mahajan 5dc52446f3 Fixed the issues reported while testing #8208 2025-01-02 15:47:25 +05:30
Akshay Joshi eb517e6df8 Fixed following issues for Workspace:
1. On the welcome page, the Password should be cleared when the user/db is changed.
2. Added a spinner when we tried to connect to the existing remote server.
3. Details should be cleared when we select the existing server but cancel when it asks for the password.
4) Return from the chageWorkspace function if clicking on the same workspace button multiple times.
2025-01-02 13:24:13 +05:30
Akshay Joshi 621d66fb57 Add correct validation for Authlib. 2025-01-01 11:58:10 +05:30
Akshay Joshi 964d211260 Copyright updated for 2025 2025-01-01 11:26:42 +05:30
Aditya Toshniwal c83d997f2f Make depedabot use Python v3.8.
Update release notes.
2025-01-01 10:42:49 +05:30
Rohit Bhati 7a9a45b065 Fixed an issue where tooltip on a dropdown button is blocking access to dropdown menu. #8255 2025-01-01 10:31:48 +05:30
Rohit Bhati 700ecaef4a Show the python version used for the pgAdmin server in the about dialog. #8249 2025-01-01 10:28:58 +05:30
Anil Sahoo 19c8fcd775 Fixed jest test cases failing due to an update of react-resize-detector package. 2024-12-30 17:22:07 +05:30
Rohit Bhati bcd6f3f429 Fix a formatting issue in View/Edit tool generated SQL where some filters are applied. #8254 2024-12-30 11:56:24 +05:30
dependabot[bot] 92e531db02 Javascript dependency: Bump react-resize-detector in /web 2024-12-24 11:35:26 +05:30
dependabot[bot] f81c546069 Javascript dependency: Bump @mui/icons-material in /web 2024-12-24 11:34:49 +05:30
dependabot[bot] 68f41dd5c6 Javascript dependency: Bump @tanstack/react-query in /web 2024-12-24 11:33:40 +05:30
dependabot[bot] 1be9dd4033 Python dependency: Update authlib requirement from ==1.3.* to ==1.4.* 2024-12-24 11:32:57 +05:30
dependabot[bot] 0c6776b713 Python dependency: Update flask-socketio requirement. 2024-12-24 11:32:36 +05:30
Akshay Joshi 9cd8492ec1 Fixed an issue where Schema Diff not produce difference script for Index definition with where condition. #8072 2024-12-19 16:40:18 +05:30
Akshay Joshi 6df5d14a60 Fixed an issue where properties dialog throwing an error for Materialized View. #8209 2024-12-19 15:55:23 +05:30
Anil Sahoo 91881ad6d3 Fixed an issue where option key was not registering in PSQL tool. #6968 2024-12-19 15:40:23 +05:30
Akshay Joshi e011ad02a5 Remove console log 2024-12-18 18:43:04 +05:30
Akshay Joshi fdf5d12196 1) Fixed schema diff workspace button is disabled for the first tab.
2) Adhoc servers should connect with service file and open the Query/PSQL tool.
2024-12-18 18:19:13 +05:30
Rohit Bhati 8af25ba0c1 Change button labels and color in delete confirmation dialog for all objects to improve UX. #6513 2024-12-18 17:25:36 +05:30
Akshay Joshi 2ba4f79a46 Package 'rc-resize-observer' throwing error on Windows so pin the version. 2024-12-18 12:46:18 +05:30
Akshay Joshi 185e0f61e2 Close the connection and delete adhoc server if all it's Query tool and PSQL connections are closed. 2024-12-17 17:57:25 +05:30
Aditya Toshniwal e84f4cd35b Fix an issue where view/edit tool is not opening in workspace layout.
Fixed few other theme related issues.
2024-12-17 17:03:37 +05:30
Yogesh Mahajan eef20dc5a9 Correct the documentation for the MFA configuration. #8142 2024-12-17 11:50:25 +05:30
Akshay Joshi 0b65dcd4ef Updated Javascript dependencies. 2024-12-17 11:36:18 +05:30
Akshay Joshi ba58b140d4 Updated version of liblz4 in Docker file. 2024-12-16 14:58:47 +05:30
Yogesh Mahajan a0cd6c6a88 Allow deleting the entry while creating/adding new label to enumeration type. #8208 2024-12-16 14:54:24 +05:30
Grégoire Bellon-Gervais 776e092a89 Fix in case of the file does not exist (#8258) 2024-12-16 14:53:18 +05:30
Akshay Joshi fe6e21a08b Enhanced pgAdmin 4 with support for Workspace layouts. #7708 2024-12-16 14:52:56 +05:30
Akshay Joshi 4e2fd404c0 pgagent extension should be created only EPAS < 17. 2024-12-12 16:49:11 +05:30
Akshay Joshi ae9d324f8f Updated Python & Javascript dependencies. 2024-12-12 14:54:31 +05:30
Akshay Joshi 6f8fb6f49d pgAgent for EPAS is no more supported from v17, so changing the github actions accordingly. 2024-12-11 18:56:24 +05:30
Akshay Joshi 52d6017ce5 Removed PG/EPAS 12 and Added PG/EPAS 17 for github actions. 2024-12-11 12:31:53 +05:30
Aditya Toshniwal 9e58717321 Fix text wrapping issue for tags feature. #8192 2024-12-09 18:04:47 +05:30
Akshay Joshi c3a334f8df 1) Update the repo to the version 2.0 for downloading EPAS.
2) Use 'ubuntu-22.04' instead of 'ubuntu-latest'.
2024-12-09 12:32:03 +05:30
Akshay Joshi 72a4f93e4f Updated version for release v8.14 2024-12-09 11:51:07 +05:30
Libor M. 09e13b2f37 Czech translation for version 8.14 2024-12-09 11:33:50 +05:30
Aditya Toshniwal 60078c37a3 Add a new config MAX_SERVER_TAGS_ALLOWED to limit the number of tags on server node. #8192 2024-12-06 12:16:15 +05:30
Yogesh Mahajan 1cf9ced260 Fixed the issues reported while testing #7330. 2024-12-06 12:08:24 +05:30
Domenico Sgarbossa 50cf6489b9 Italian translation updated for v8.14 2024-12-06 11:34:10 +05:30
Rohit Bhati 621a48c642 More fixes related to query tool prompting for unsaved changes when there are no changes. #8127 2024-12-05 19:03:31 +05:30
Akshay Joshi c841c82220 Update message catalogs for v8.14 2024-12-05 18:40:39 +05:30
Yogesh Mahajan 22b89265d6 Ensure CSRF errors handled to return unauthorized response. #8065 2024-12-05 16:54:35 +05:30
Anil Sahoo e2c20b5022 Fixed an issue where a column name change in the edit dialog of the table node does not show the updated column name. #7892 2024-12-05 16:53:50 +05:30
Aditya Toshniwal 2dd7de73b9 Update dependabot.yml to check for updates on a weekly basis instead of daily. 2024-12-05 16:31:38 +05:30
Khushboo Vashi bd227e03bd Fix an issue where pgAdmin crashes on accessing the dashboard state tab when database is super busy. #7809 2024-12-05 15:00:35 +05:30
Akshay Joshi 413202899f Update release note. 2024-12-05 12:23:29 +05:30
Aditya Toshniwal bd2a484c2f Added support for adding tags on a server node. #8192 2024-12-05 12:18:26 +05:30
Pravesh Sharma 5e8a75cdf9 Added escaping for the placeholder parameters before passing it to the passexec command. #6794 2024-12-04 15:42:45 +05:30
Yogesh Mahajan d8ed75dbfd Ensure correct custom SSL certificate passed in connection string. #8215 2024-12-04 15:38:27 +05:30
dependabot[bot] 4392b83a98 Javascript dependency: Bump @tanstack/react-query in /web 2024-12-04 11:41:29 +05:30
Aditya Toshniwal 256d1e55c8 Fixed an issue where doing Ctrl/Cmd+C on a selected text in a cell editor of data output in the query tool copied the complete text. #8157 2024-12-04 11:32:01 +05:30
Aditya Toshniwal c2dcfdb96f Update package.json and yarn.lock to use yarn v3.8.7 2024-12-04 09:47:45 +05:30
Khushboo Vashi 46c7562ed2 Update release note. 2024-12-03 17:52:39 +05:30
Yogesh Mahajan 42018e69a5 Add support to deploy pgAdmin in container with readOnlyRootFilesystem to true. #7330 2024-12-03 17:50:20 +05:30
Akshay Joshi 56c6fc6b72 Updated Javascript dependencies. 2024-12-03 11:58:25 +05:30
dependabot[bot] c0a6ff3029 Javascript dependency: Bump zustand from 4.5.5 to 5.0.1 in /web 2024-12-02 12:13:43 +05:30
dependabot[bot] 79f3db5ea5 Javascript dependency: Bump @tanstack/react-query in /web 2024-12-02 11:27:55 +05:30
dependabot[bot] b5327cbe17 Javascript dependency: Bump yarn-audit-html from 4.0.0 to 7.3.2 in /web 2024-12-02 11:24:41 +05:30
dependabot[bot] 217e9ed0b1 Python dependency: Update typer[all] requirement in /web/regression 2024-12-02 11:24:21 +05:30
dependabot[bot] 82c7a94023 Javascript dependency: Bump @tanstack/react-query in /web 2024-12-02 11:24:01 +05:30
dependabot[bot] 1a1b63f92a Javascript dependency: Bump @types/classnames 2024-12-02 11:23:40 +05:30
Pravesh Sharma 6810fa6ce6 Add support for passing connection details as placeholders in the passexec command. #6794
Added a fix where electron app menu was not refreshing when node selection changed.
2024-11-29 17:54:07 +05:30
Aditya Toshniwal 8876c4241f Update package.json to use yarn v3.8.6 2024-11-29 12:08:42 +05:30
Yogesh Mahajan 190574b3af Fix issues more scenarios related to crypt key missing on backend server restart. #8065 2024-11-29 12:05:46 +05:30
Akshay Joshi fac1857579 Updated yarn.lock 2024-11-29 11:27:03 +05:30
dependabot[bot] acedd38899 Javascript dependency: Bump imports-loader from 4.0.1 to 5.0.0 in /web 2024-11-29 11:08:59 +05:30
dependabot[bot] e3bf110f1f Javascript dependency: Bump style-loader from 3.3.4 to 4.0.0 in /web 2024-11-29 11:08:40 +05:30
dependabot[bot] 638d597061 Python dependency: Update cryptography requirement 2024-11-29 11:06:56 +05:30
dependabot[bot] 588aa88144 Python dependency: Update cryptography requirement in /web/regression 2024-11-29 11:06:36 +05:30
dependabot[bot] c918407eb3 Javascript dependency: Bump @testing-library/react in /web 2024-11-29 11:06:15 +05:30
dependabot[bot] f87c981974 Javascript dependency: Bump electron from 33.1.0 to 33.2.1 in /runtime 2024-11-29 11:05:52 +05:30
dependabot[bot] 360ec29963 Javascript dependency: Bump date-fns from 3.6.0 to 4.1.0 in /web 2024-11-29 11:05:31 +05:30
Aditya Toshniwal 657b0f82ec Fixed an issue where query tool throws syntax error if a newly added row is untouched and saved. #8028
Fixed an issue where auto-width of wide columns in data output is incorrectly calculated. #8158
2024-11-28 14:18:13 +05:30
dependabot[bot] 2813d82996 Javascript dependency: Bump ip-address from 9.0.5 to 10.0.1 in /web 2024-11-28 10:54:22 +05:30
dependabot[bot] b13dd2abc2 Javascript dependency: Bump axios from 1.7.7 to 1.7.8 in /runtime 2024-11-28 10:53:53 +05:30
dependabot[bot] a5a5503821 Python dependency: Bump selenium in /web/regression 2024-11-28 10:53:29 +05:30
Anil Sahoo cd2f48aeb1 Fixed an issue in schema diff where an error message popup was showing some garbage without any info. #8098 2024-11-28 10:16:41 +05:30
Aditya Toshniwal 88e515093c Show auto-complete column names in filtered rows dialog of table and filter options of view/edit data tool. #3751
Allow setting NULL ordering for columns in view/edit data filter dialog. #3317
2024-11-28 10:13:57 +05:30
Pravesh Sharma 9ef5a53790 Add a user preference to enable/disable alternating row background colors in the data output of query tool. #8134
Fixed some theme related issues.
2024-11-27 11:23:13 +05:30
Aditya Toshniwal da530824d6 Fixed an issue where indent with space was not aligning to next tab position. #7486 2024-11-25 16:42:07 +05:30
Aditya Toshniwal ea693396b8 Update MUI from v5 to v6 2024-11-25 16:36:21 +05:30
Khushboo Vashi f4cba74bf6 Fixed an issue where querying a foreign table gives the error 'ForeignTableCommand' object has no attribute 'auto_commit'. #7384 2024-11-25 14:40:26 +05:30
dependabot[bot] 8b68ea6465 Javascript dependency: Bump imagemin from 8.0.1 to 9.0.0 2024-11-25 11:48:04 +05:30
dependabot[bot] 69046a9429 Python dependency: Update jsonformatter requirement. 2024-11-25 11:46:46 +05:30
dependabot[bot] f3f8c1b7e8 Python dependency: Update jsonformatter requirement 2024-11-25 11:46:24 +05:30
Aditya Toshniwal 042888f5d7 Fixed an issue where ERD auto-layout should: #6592 (#8167)
- Always generate right-angled links
- Switch port to Left/Right for the best link route.
2024-11-22 16:26:50 +05:30
Akshay Joshi ec197c68b8 Updated release note. 2024-11-21 15:58:26 +05:30
Yogesh Mahajan 026c0d2389 Ensure the crypt key is retrieved correctly on backend server restart. #8065 2024-11-21 15:55:38 +05:30
Akshay Joshi 032583e280 Updated release note. 2024-11-21 11:56:30 +05:30
dependabot[bot] 57b3771450 Javascript dependency: Bump @testing-library/jest-dom 2024-11-21 11:22:04 +05:30
Pravesh Sharma 4dbfdd8740 Added an EPAS 17 resql test case for builtin locale provider. #8095 2024-11-21 11:21:05 +05:30
Aditya Toshniwal f23fe38e0b Update release notes. 2024-11-21 10:59:08 +05:30
Rohit Bhati 321366489d Fixed an issue where query tool should show results and messages only from the last executed query. #8010
Fixed an issue where query tool should not prompt for unsaved changes when there are no changes. #8127
2024-11-21 10:52:43 +05:30
Anil Sahoo 6d5b1673e6 Fix SonarQube code smells for PgTree directory. 2024-11-19 15:45:00 +05:30
Anil Sahoo 8be65ceb7b Fixed an issue related to the query tool update connection after the server disconnected from the object explorer. #7865 2024-11-19 15:44:40 +05:30
Akshay Joshi a8384a8826 Added new language Chinese (Traditional) and rename language code for Chinese (Simplified) 2024-11-19 14:20:25 +05:30
Akshay Joshi 9645bb3911 Upgrade Flask to 3.1.* for Python version >= 3.9 2024-11-18 20:59:38 +05:30
dependabot[bot] 847059b717 Javascript dependency: Bump mini-css-extract-plugin 2024-11-18 20:49:13 +05:30
dependabot[bot] 08c776e308 Javascript dependency: Bump @eslint/plugin-kit 2024-11-18 20:48:17 +05:30
dependabot[bot] 716ef2f0db Javascript dependency: Bump eslint from 9.14.0 to 9.15.0 2024-11-18 20:47:44 +05:30
Aditya Toshniwal c5d5fbdafd Fixed an issue where Ctrl/Cmd + A was not selecting all data in query tool data grid. #5099 2024-11-14 16:56:03 +05:30
Aditya Toshniwal 9a8d520abd Fix few issues found in menu rendering code and GUI test cases 2024-11-14 14:49:07 +05:30
Aditya Toshniwal 296befc881 Code refactoring at multiple places to improve re-usability 2024-11-14 14:16:38 +05:30
Aditya Toshniwal 00d3aaa1fd Refactor menu building code to support sub-menus of any depth 2024-11-14 13:36:42 +05:30
Akshay Joshi 64399901ad Added release note for 8.14 2024-11-14 13:23:58 +05:30
Pravesh Sharma 0aba9703cd Added support for a builtin locale provider in the Database dialog. #8095 2024-11-14 13:20:01 +05:30
Yogesh Mahajan f8192b82b8 Allow the use of a pgpass file in the pgAdmin container via Docker secrets. #5786 2024-11-14 13:09:21 +05:30
John (Haipeng) Jiang 040e988323 Schema Diff bug when comparing materialized views with indices: key 'indrelid' needs to be ignored. 2024-11-14 12:43:33 +05:30
dependabot[bot] 849cd65bb7 Javascript dependency: Bump valid-filename from 2.0.1 to 4.0.0 in /web 2024-11-14 12:42:46 +05:30
dependabot[bot] 382a35c25e Python dependency: Update typer[all] requirement 2024-11-14 12:42:21 +05:30
dependabot[bot] 0c22b78cf9 Python dependency: Update typer[all] requirement in /web/regression 2024-11-14 12:41:57 +05:30
dependabot[bot] 7d1a08f22f Javascript dependency: Bump @tanstack/react-query in /web 2024-11-14 12:41:16 +05:30
dependabot[bot] bce53e02e5 Javascript dependency: Bump exports-loader from 4.0.0 to 5.0.0 in /web 2024-11-14 12:40:55 +05:30
Kuo Chaoy 606b5287be Chinese (Simplified) translation for v8.14 2024-11-14 10:46:14 +05:30
Nicolas b278265005 French translation for v8.13 2024-11-11 15:03:29 +05:30
Aditya Toshniwal f9d881ffa6 Fix GUI test cases failing because of previous commit 2024-11-08 18:09:39 +05:30
Aditya Toshniwal 6fcc4ae6a2 More fixes for issues found while testing query tool pagination changes. #1780 2024-11-08 15:48:24 +05:30
Domenico Sgarbossa 67d3f14c3d Italian translation for v8.13 2024-11-08 11:45:16 +05:30
Aditya Toshniwal 947dbf6d0a Update release notes. 2024-11-07 22:02:18 +05:30
Rohit Bhati 173cfb72b2 Format dashboard graph metrics for better readability. #6016 2024-11-07 22:00:45 +05:30
Akshay Joshi 2e61eb0990 Updated message catalogs for v8.13 2024-11-07 19:08:40 +05:30
Aditya Toshniwal 3417186df7 Fix issues found while testing pagination changes. #1780 2024-11-07 18:02:39 +05:30
Aditya Toshniwal 772c6ecd84 Remove the dependency on python packages eventlet and greenlet. #8102 2024-11-07 16:45:18 +05:30
dependabot[bot] efe7f1de6a Javascript dependency: Bump electron from 33.0.2 to 33.1.0 in /runtime 2024-11-07 11:37:58 +05:30
Pravesh Sharma b51eef12b7 Add an object menu option to disconnect all server and database connections. #1984 2024-11-06 15:52:31 +05:30
Akshay Joshi 6cb71c9ae4 Werkzeug 3.1 requires python version >= 3.9. 2024-11-06 12:37:51 +05:30
dependabot[bot] 2e098c487a Python dependency: Bump selenium in /web/regression 2024-11-06 11:39:05 +05:30
dependabot[bot] e592dfde2a Javascript dependency: Bump eslint from 9.13.0 to 9.14.0 in /runtime 2024-11-06 11:38:32 +05:30
dependabot[bot] 7168499521 Python dependency: Update werkzeug requirement from ==3.0.* to ==3.1.* 2024-11-06 11:37:45 +05:30
Yogesh Mahajan f5f79a516a Fix SELinux permission issue. 2024-11-05 11:51:02 +05:30
Aditya Toshniwal 44dc78f4df - Update few JS dependencies.
- Update runtime documentation page.
2024-11-04 13:47:30 +05:30
Akshay Joshi 25c3142586 Updated python packages. 2024-11-02 17:39:15 +05:30
Aditya Toshniwal a44424d5fa Update release notes 2024-10-31 19:23:49 +05:30
Aditya Toshniwal bb4777578a Remove bootstrap from the runtime code and update both yarn.lock files. #8077 2024-10-31 18:07:26 +05:30
Pravesh Sharma 2f4cae35bd Updated the react-menu library from v2 to v4. #8061 2024-10-30 17:08:24 +05:30
Rohit Bhati a9bfa8a71d Fix multiple issues related to debugger params dialog input. #7883
- Handle multiple possible values for a boolean parameter.
- Disable value input when "Use default" is enabled.
2024-10-29 16:01:46 +05:30
Aditya Toshniwal 9e3f5f53cc Pin the python version for python tests git runners to 3.12 until pgAdmin supports latest 2024-10-28 14:12:29 +05:30
Khushboo Vashi 8b354aec1d Update Release Notes. 2024-10-19 10:48:18 +05:30
Pravesh Sharma 6101e72552 Fix the QR code generation issue for 2FA. 2024-10-18 19:34:31 +05:30
Yogesh Mahajan 898c7b27df Fix the Jinja2 error for python 3.8. 2024-10-18 19:30:42 +05:30
Pravesh Sharma 4d7fc8be52 Resolved issues reported during testing of #7655. 2024-10-18 13:05:59 +05:30
Akshay Joshi f819841430 Update the release note. 2024-10-17 17:33:08 +05:30
Pravesh Sharma 5d008f0525 Fixed an issue where the query tool was crashing when an empty geometry was being rendered. #7655 2024-10-17 14:13:40 +05:30
Aditya Toshniwal b0d4200aa0 Few UX improvements in query tool pagination. #1780 2024-10-15 16:25:39 +05:30
Akshay Joshi 167bbe100e Another attempt to fix signtool error on Windows 2024-10-15 14:48:14 +05:30
Akshay Joshi 4e7422ed4b Fixed an issue where the Windows Installer was missing a Digital Certificate. 2024-10-15 13:32:11 +05:30
Akshay Joshi 867b2a5149 Updated version for release v8.13 2024-10-14 16:20:54 +05:30
Yogesh Mahajan 2cc8f5f272 Ensure server connection is successful for sslrootcert=system in server configuration. #7907 2024-10-14 16:17:46 +05:30
Kira 9be0fef470 Indonesian translation for version 8.13 2024-10-14 11:33:52 +05:30
Nicolas b4759e776e French translation for version 8.13 2024-10-14 11:29:28 +05:30
Domenico Sgarbossa 1d8dfc110e Italian translation for version 8.13 2024-10-14 11:23:47 +05:30
Libor M. 6ed615a1fc Czech translation for version 8.13 2024-10-14 11:23:19 +05:30
Akshay Joshi 7d12dc3b80 Remove unused variable from Debugger. 2024-10-10 17:54:15 +05:30
Akshay Joshi 72a102aac8 Update message catalog for v8.13 2024-10-10 17:51:59 +05:30
Akshay Joshi 17883fbd84 Use PG17 as the default in the container. #8022 2024-10-10 15:55:43 +05:30
Pravesh Sharma 7a7782a350 Fixed an issue in the debugger where function arguments of the character data type were being truncated. #8007 2024-10-10 15:25:08 +05:30
Rohit Bhati b649094d36 Fix the issue where rows do not retain shading when scrolling. #8013 2024-10-10 15:19:24 +05:30
Aditya Toshniwal 8c45dea975 Fixed an issue where graphical explain keeps the node details open even after plan changed. #7993 2024-10-10 10:50:11 +05:30
Rohit Bhati 509c696aa3 Fixed an issue where the copy shortcut was not working in the Query Tool data grid. #7920 2024-10-09 17:06:51 +05:30
Yogesh Mahajan 866db40f48 Fixed the issues reported while testing. #5869 2024-10-09 17:05:34 +05:30
Aditya Toshniwal 9169d3d4bf Fixed an issue where cursor selection is not visible in the PSQL tool. #7957 2024-10-09 14:42:30 +05:30
Tomas Dabašinskas f1e48b719d Fix a typo in docs for google oauth2
It should probably be `userinfo`, not `useinfo` 🙂
2024-10-07 19:05:46 +05:30
Akshay Joshi 081bebaf80 Update release note. 2024-10-07 11:47:31 +05:30
Yogesh Mahajan 1fe840fcac Allow to pass PGADMIN_CONFIG_CONFIG_DATABASE_URI from docker secrets. #5869 2024-10-07 11:44:20 +05:30
Anil Sahoo 6cccb5da31 Fixed an issue where Dashboard tab showing 'Something went wrong'. #7955 2024-10-07 11:41:27 +05:30
Akshay Joshi 6c3f0a4606 1) Updated French Translation.
2) Updated release note.
2024-10-04 12:26:37 +05:30
Rohit Bhati d736f4266c Fixed an issue where default EOL in the query tool should be based on the OS. #7393 2024-10-03 17:29:58 +05:30
Rohit Bhati 33c88ceb68 - Move 'About pgAdmin 4' to app menu on macOS. #7289
- Add appropriate minimum width and height setting for desktop apps to avoid app accidentally going below visibility levels. #7988
2024-10-03 16:29:11 +05:30
Akshay Joshi a1f8e010b7 qrcode 8.* not available with Python 3.8. Fixed 2024-10-03 10:43:46 +05:30
dependabot[bot] d924a7fb8d Python dependency: Update qrcode requirement from ==7.* to ==8.* 2024-10-03 09:53:08 +05:30
dependabot[bot] 95905cfd5b Python dependency: Update flask-socketio requirement in /web/regression 2024-10-03 09:51:52 +05:30
Dave Page c0122a72c8 Update the Windows build to work with Meson-built PostgreSQL and winpgbuild. 2024-10-01 15:51:43 +01:00
Dave Page ff838e43df Make the vcredist filename configurable, as the name has changed in newer VC++ releases. 2024-10-01 12:38:47 +01:00
Aditya Toshniwal c6d7a0a8da Add missing eslint React rules and fix the linter errors. 2024-10-01 16:32:04 +05:30
Akshay Joshi 485c654c6e Updated release note. 2024-10-01 16:16:47 +05:30
dependabot[bot] 265bf61adf Python dependency: Bump psycopg[c] in web/regression 2024-10-01 15:51:42 +05:30
dependabot[bot] 0bcabd59d3 Python dependency: Bump psycopg[c] from 3.2.2 to 3.2.3 2024-10-01 15:51:03 +05:30
dependabot[bot] 6bda0d4891 Javascript dependency: Bump jsoneditor from 9.10.5 to 10.1.0 2024-10-01 15:50:43 +05:30
dependabot[bot] 97ddab93af Javascript dependency: Bump eslint from 9.11.0 to 9.11.1 2024-10-01 15:50:22 +05:30
Aditya Toshniwal 6322674d98 Replace infinite scrolling with pagination in query tool data output for better UX and performance. #1780 2024-10-01 14:47:12 +05:30
Rohit Bhati f8fb78be11 1) Alternate the background color of rows to enhance readability. #2874
2) Make the background color for the serial number and header cells distinct. #7863
2024-10-01 12:21:44 +05:30
Ashesh Vashi 15c37b620e Fixed issues reported in #7958
* Fixed issues reported in #7954

- Search wasn't working as we were using the wrong row-index, while
  rendering it.
- Fixed the CSS issue with the alignment of the search input box.
- Pass the row object while rendering the 'DataRow' component, to
  improve the performance as it repeatedly calls the filtering function for each row.
- Changed the order of the validators on a field to prioritize the
  'empty' string validator over the unique-id validator in a
  collection.
- Use 'row.index' instead of rowId, while rendering a grid row
2024-10-01 12:06:59 +05:30
Akshay Joshi 28eb2c0b4b Update release note. 2024-09-27 16:25:51 +05:30
Pravesh Sharma 535c7eeef8 Fixed an issue where the dock layout was not saved upon closing a tab. #7919 2024-09-27 16:22:48 +05:30
Pravesh Sharma f0ecc95ca9 Fixed an issue to allow the Enter key to save data in the result grid text editor. #5307 2024-09-27 12:18:07 +05:30
Rohit Bhati 0e63914ab3 Fixed an issue where the copy shortcut CTRL +C was not working in the Query Tool data grid. #7920 2024-09-27 12:17:21 +05:30
Yogesh Mahajan 9b64acb3d2 Allow OAuth2 params OAUTH2_NAME, OAUTH2_DISPLAY_NAME, OAUTH2_ICON, OAUTH2_BUTTON_COLOR to be optional. #7965 2024-09-27 10:35:21 +05:30
Akshay Joshi 0ab5e0d4ef Update release note. 2024-09-24 19:44:28 +05:30
Rohit Bhati 4cb0f87dfd Added support for auto-detecting and setting the End-of-line character (LF/CRLF) in the query tool editor. #7393 2024-09-24 16:39:08 +05:30
Pravesh Sharma fa64e8b38f Fixed an issue where role properties were not loading. #7837 2024-09-24 11:59:05 +05:30
Akshay Joshi fb6cca415d Updated yarn.lock 2024-09-23 17:02:24 +05:30
Akshay Joshi b757d26933 1) Update JS and Python dependencies from Dependabot.
2) Added new release note file.
2024-09-23 16:33:20 +05:30
Dave Page 9f64f5b8db Copy liblz4 and libzstd libraries if present in the PostgreSQL build. 2024-09-20 11:47:43 +01:00
Khushboo Vashi a0aa185518 Fixed a security issue where the OAuth2 client ID and secret exposed through the web browser (CVE-2024-9014). #7945 2024-09-20 08:45:37 +05:30
Ashesh Vashi 1f53baee8f Fixed the dynamic column updation in the Unique & Primary Keys while creating a table.
* Updated the columns for the unique and primary keys while creating a table.
Use the 'editable' option for a Cell instead of 'disabled'.

* Don't need to define the hidden member as fields in GridHeaderSchema

* Updated the columns for the exclusion constraints while creating a
 table.

* Signaled the relevant field, when column options have changed, for all
the children of a table.

* Use current snapshot of data for the GrigFormHeadeer

* Fixed the styling for the search input box

* Don't check for the 'colOptions.editable' flag, as it could be
indirect call as well.
2024-09-19 18:57:09 +05:30
Comocen 6a79d0a195 Russian translation for version 8.12 2024-09-19 18:54:38 +05:30
Aditya Toshniwal 8fd5efaa84 Make sure ALLOW_SPECIAL_EMAIL_DOMAINS should also work for pgAdmin docker apps. #6222 2024-09-19 14:03:43 +05:30
Aditya Toshniwal 53cdc80df2 Add a new config variable - ALLOW_SPECIAL_EMAIL_DOMAINS to allow special domains for pgAdmin user emails. #6222 2024-09-19 10:51:06 +05:30
Anil Sahoo 38d4728333 Fixed an issue where the query is not getting executed after giving a password and connecting to the server on the not saved password server. #6502 2024-09-18 20:55:29 +05:30
Ashesh Vashi b0cd028ff8 Fixed an issue introduced due to reloading of the tree due to changes in particular preferences (#7942)
* Fix an issue - when the object browser tree is being recreated due to reloading for changes in some of the preferences. Tree object returns object from the previous instance as 'selected', but - it does not have the 'treeNodeInfo' available. In this special case - we would consider that there is no node selected at that particular moment, and pass information accordingly.

* Fixed 'New Connection' dialog issue after connecting a disconnected server.

* Disable the 'Add' button in the GridHeader with form, when 'canAdd'
flag is set to false.

* Convert the access path to string array for correct comparision.

* Check the access path type before comparison.
When language is 'c', set the 'code' block read-only.

* Enabled 'Strict' control for EPAS >= 95
2024-09-18 20:55:01 +05:30
Aditya Toshniwal 100f59f78b Fixed an issue where "Quit App" confirmation modal in desktop app is not respecting "Confirm on close or refresh?". #7890 2024-09-18 16:43:57 +05:30
Aditya Toshniwal 23ea201325 Fixed an issue where graph visualizer pie chart was showing X axis, Y axis and grid lines. 2024-09-18 15:07:29 +05:30
Ashesh Vashi 441cc57bb8 Don't show 'Types of objects' for the 'Cluster' operation. Fixes #7884 2024-09-18 07:48:09 +05:30
Anil Sahoo a361fd94ff Fixed an issue where the query gets executed automatically when the query tool opened using Create Script, Schema Diff. 2024-09-18 07:47:20 +05:30
Akshay Joshi acb0eb2141 Update version for release v8.12 2024-09-16 17:57:07 +05:30
Ashesh Vashi 315d1a40a4 Fixes issues #7884
* Introduced a 'exclude' option in the 'Field' to exclude it from the
change completely. Use the option 'exclude' to add field
'notNullColumns', which will be excluded from the data, but - can be
used to force rerender the 'Not Null Columns' select control on
change of it.

* Fixed the linter issue

* Rerender the cell as well, when dependent changes values. (#7884)

* Listen for the depenent changes even for the non-visible controls

* Use 'useRef' on every rendering to avoid the React 'Something wrong' page
2024-09-16 17:55:43 +05:30
Ashesh Vashi 92dd13e72a Introduced a 'exclude' option in the 'Field' to exclude it from the change.
* Introduced a 'exclude' option in the 'Field' to exclude it from the
change completely. Use the option 'exclude' to add field
'notNullColumns', which will be excluded from the data, but - can be
used to force rerender the 'Not Null Columns' select control on
change of it.

* Fixed the linter issue
2024-09-16 15:28:33 +05:30
Ashesh Vashi 0d39e791c9 Fixed the import-export 'Not null columns' and User Management issue #7884 2024-09-16 13:12:41 +05:30
Akshay Joshi 53760dbf59 Fixed tree related issues. 2024-09-16 10:09:28 +05:30
Yogesh Mahajan dd6f6cf1af Support OIDC in OAuth2 authentication. #7839 2024-09-16 08:36:54 +05:30
Ashesh Vashi 5e96f0fd61 Fixes the Variable Schema UI issues and InlineView bug reported in #7884
* Show the icon for the 'Reset' button. (Reference #7884)

* Reload the server list after connecting to a server in the 'New
connection' dialog (QueryTool). (Reference: #7884)

* Pass the grid path during the bulk update (click on a radio action)

* Don't assign the cell value to the 'rowValue' variable.

* Don't rely on the 'optionsLoaded' for setting the variable types as it
is loaded asynchronously, and variable types data may not be available
while rendering the 'value' cell. (Fixes #7884)

* Fixed a type while checking for the 'inline-group'. fixes (#7884)

* 'vnameOptions' can be a Promise function too, hence - taken care accrodingly.

* Introduced a parameter 'reloadOnDepChanges' in the BaseSchemaUI field
to force reload the control on value change for one of the
dependencies.

* Reload on the components in case of dependent value changes.

* Introduced 'useSchemaStateSubscriber', which generates a state
subscriber mananager instance. It helps multiple subscribers in a
single control as we could have multiple subscribe within a control.
(For example - value, options, errors, etc).

* Fixed all the issues reported (#7884)
2024-09-16 00:04:37 +05:30
Domenico Sgarbossa 98d703645c Italian translation for version 8.12 2024-09-16 00:02:41 +05:30
Libor M. cead7b0a6f Czech translation for version 8.12 2024-09-15 23:59:23 +05:30
Akshay Joshi 139d9e21da Update message catalogs for v8.12 2024-09-12 18:34:49 +05:30
Akshay Joshi d81bd595aa Updated release note 2024-09-11 13:07:13 +05:30
Pravesh Sharma ed211a2bbb Fixed an issue where servers listed in the servers.json file were being reimported upon container restart. #7811 2024-09-11 13:06:31 +05:30
Ashesh Vashi e21911b1c6 All the issues are fixed reported in #7884
* Show the icon for the 'Reset' button. (Reference #7884)

* Reload the server list after connecting to a server in the 'New
connection' dialog (QueryTool). (Reference: #7884)

* Pass the grid path during the bulk update (click on a radio action)

* Don't assign the cell value to the 'rowValue' variable.
2024-09-11 12:21:41 +05:30
Yogesh Mahajan d3d1eb3355 Fixed issue of migrating tunnel password with new master password mechanism. #7076 2024-09-09 17:38:22 +05:30
Akshay Joshi d8381918a7 Updated release note. 2024-09-09 14:35:41 +05:30
Ashesh Vashi e9af0c3226 Improved the extendability of the SchemaView and DataGridView. (#7876)
Restructured these modules for ease of maintenance and apply the single
responsibility principle (wherever applicable).

* SchemaView

 - Split the code based on the functionality and responsibility.
 - Introduced a new View 'InlineView' instead of using the
   'nextInline' configuration of the fields to have a better, and
   manageable view.
 - Using the separate class 'SchemaState' for managing the data and
   states of the SchemaView (separated from the 'useSchemaState'
   custom hook).
 - Introduced three new custom hooks 'useFieldValue',
   'useFieldOptions', 'useFieldError' for the individual control to
   use for each Schema Field.
 - Don't pass value as the parameter props, and let the
   'useFieldValue' and other custom hooks to decide, whether to
   rerender the control itself or the whole dialog/view. (single
   responsibility principle)
 - Introduced a new data store with a subscription facility.
 - Moving the field metadata (option) evaluation to a separate place
   for better management, and each option can be defined for a
   particular kind of field (for example - collection, row, cell,
   general, etc).
 - Allow to provide custom control for all kind of Schema field.

* DataGridView

 - Same as SchemaView, split the DataGridView call into smaller,
   manageable chunks. (For example - grid, row, mappedCell, etc).
 - Use context based approach for providing the row and table data
   instead of passing them as parameters to every component
   separately.
 - Have a facility to extend this feature separately in future.
   (for example - selectable cell, column grouping, etc.)
 - Separated the features like deletable, editable, reorder,
   expandable etc. cells using the above feature support.
 - Added ability to provide the CustomHeader, and CustomRow through the
   Schema field, which will extend the ability to customize better.
 - Removed the 'DataGridViewWithHeaderForm' as it has been achieved
   through providing 'CustomHeader', and also introduced
   'DataGridFormHeader' (a custom header) to achieve the same feature
   as 'DataGridViewWithHeaderForm'.
2024-09-09 14:27:31 +05:30
Khushboo Vashi e5012ea9c6 Add debug logs to observe the OpenID token response. 2024-09-04 19:46:40 +05:30
Yogesh Mahajan 306269af5d Fix issues found while testing keyring changes. #7076 2024-09-02 19:32:25 +05:30
Khushboo Vashi 6563067892 Update release notes. 2024-09-02 15:09:34 +05:30
Anil Sahoo 8bae604129 Fix the query tool restore connection issue on the server disconnection from the left side object explorer. #6502 2024-09-02 15:06:11 +05:30
Aditya Toshniwal f451f89d38 Cleanup yarn cache before bundling the installers to reduce size 2024-08-30 14:09:53 +05:30
Akshay Joshi 61413c1902 Update release note. 2024-08-30 12:27:03 +05:30
Pravesh Sharma f88ca891fa Added feature to restore preferences to their default values. #1900 2024-08-30 12:24:24 +05:30
Pravesh Sharma 445e89576b Fixed an issue where users could not use pgAdmin if they did not have access to the management database. #7571 2024-08-30 12:13:47 +05:30
Aditya Toshniwal 1a1734cf5c Allow running non-continuous selected SQL code blocks in the query tool. #7293 2024-08-29 12:41:58 +05:30
Akshay Joshi a0f7d0d50f Update JS and Python dependenies. 2024-08-29 10:35:51 +05:30
Yogesh Mahajan c4dc839d7c Fix issue found while testing keyring related changes. #7076 2024-08-28 11:46:04 +05:30
dependabot[bot] f5c1cd9df8 Javascript dependency: Bump css-loader from 6.11.0 to 7.1.2 in /web
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.11.0 to 7.1.2.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.11.0...v7.1.2)

---
updated-dependencies:
- dependency-name: css-loader
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 11:39:48 +05:30
dependabot[bot] 177653370a Javascript dependency: Bump @emotion/memoize from 0.7.5 to 0.9.0 in /web
Bumps [@emotion/memoize](https://github.com/emotion-js/emotion) from 0.7.5 to 0.9.0.
- [Release notes](https://github.com/emotion-js/emotion/releases)
- [Changelog](https://github.com/emotion-js/emotion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/emotion-js/emotion/compare/@emotion/memoize@0.7.5...@emotion/memoize@0.9.0)

---
updated-dependencies:
- dependency-name: "@emotion/memoize"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 11:39:03 +05:30
dependabot[bot] 6bf522da0f Python dependency: Bump python-mimeparse in /web/regression
Bumps [python-mimeparse](https://github.com/falconry/python-mimeparse) from 1.6.0 to 2.0.0.
- [Release notes](https://github.com/falconry/python-mimeparse/releases)
- [Commits](https://github.com/falconry/python-mimeparse/compare/1.6.0...2.0.0)

---
updated-dependencies:
- dependency-name: python-mimeparse
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 11:38:30 +05:30
dependabot[bot] 922603975f Javascript dependency: Bump stylis from 4.3.3 to 4.3.4 in /web
Bumps [stylis](https://github.com/thysultan/stylis.js) from 4.3.3 to 4.3.4.
- [Commits](https://github.com/thysultan/stylis.js/commits)

---
updated-dependencies:
- dependency-name: stylis
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 11:37:49 +05:30
dependabot[bot] 7284f98c79 Javascript dependency: Bump electron-context-menu in /runtime
Bumps [electron-context-menu](https://github.com/sindresorhus/electron-context-menu) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/sindresorhus/electron-context-menu/releases)
- [Commits](https://github.com/sindresorhus/electron-context-menu/compare/v4.0.1...v4.0.2)

---
updated-dependencies:
- dependency-name: electron-context-menu
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 11:37:29 +05:30
dependabot[bot] 8bbc6ecdb8 Javascript dependency: Bump axios from 1.7.4 to 1.7.5 in /runtime
Bumps [axios](https://github.com/axios/axios) from 1.7.4 to 1.7.5.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.4...v1.7.5)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 11:37:08 +05:30
dependabot[bot] 7cbde91140 Javascript dependency: Bump eslint from 9.9.0 to 9.9.1 in /runtime
Bumps [eslint](https://github.com/eslint/eslint) from 9.9.0 to 9.9.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.9.0...v9.9.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 11:36:52 +05:30
Domenico Sgarbossa 5bdff56b8d Italian translation update for v8.12 2024-08-23 10:41:48 +05:30
Akshay Joshi 96ce010635 Added release note for v8.12 2024-08-22 17:47:40 +05:30
Aditya Toshniwal 47fcf87ae4 Update JS and Python packages 2024-08-22 17:20:50 +05:30
Yogesh Mahajan 1257ec9969 Revamp the current password saving implementation to keyring and reducing repeated OS user password prompts. #7076
The new implementation will store the master password in the keyring instead of storing each and every server password separately. The master password will be used to encrypt/decrypt server password when storing in the pgAdmin config DB.
2024-08-22 16:44:57 +05:30
Aditya Toshniwal cda7d7de90 Fix a crash issue on RHEL based OS's occurring when File menu is clicked. 2024-08-20 16:33:12 +05:30
Aditya Toshniwal e7981c7f11 Fix windows, linux builds as pgAdmin 4 desktop is not opening. 2024-08-20 13:05:59 +05:30
Aditya Toshniwal ba87cbecfd Update release notes. 2024-08-19 15:17:24 +05:30
Akshay Joshi bf6b963c45 Update version for release v8.11 2024-08-19 15:09:49 +05:30
Libor M. 9f8acfc51d Czech translation for version 8.11 2024-08-19 15:07:19 +05:30
Ashesh Vashi 8cf316b853 Fixed some of the issues reported due to introduction of the custom hook 'useSchemaState'. #7776 2024-08-19 09:53:00 +05:30
Akshay Joshi 55817f685f Updated message catalogs for v8.11 2024-08-15 21:36:39 +05:30
Aditya Toshniwal 35d585251a Upgrade xterm realted packages to the latest @xterm based namespace. 2024-08-14 18:15:03 +05:30
Aditya Toshniwal 242dd48cbd Improve code highlighting in query editor. #7748 2024-08-14 16:48:51 +05:30
dependabot[bot] 30134800f3 Javascript dependency: Bump axios from 1.7.3 to 1.7.4 in /runtime (#7813)
Bumps [axios](https://github.com/axios/axios) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.3...v1.7.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-14 11:17:49 +05:30
dependabot[bot] e517fdf6bc Javascript dependency: Bump axios from 1.7.2 to 1.7.4 in /web (#7814)
Bumps [axios](https://github.com/axios/axios) from 1.7.2 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.2...v1.7.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-14 11:17:27 +05:30
Aditya Toshniwal b00ea3cd99 Update release notes. 2024-08-14 11:12:30 +05:30
Pravesh Sharma c0b6c8726e Add a home button to the geometry viewer to set original zoom level when the viewer was opened. #2046 2024-08-14 11:09:28 +05:30
Rohit Bhati 52c550e3fe Fix an issue where ERD tool should to be able to open saved pgerd file when using keyboard shortcuts. #7688 2024-08-13 14:30:58 +05:30
Aditya Toshniwal 57e72ce598 Fixed bugs found when testing react-data-grid upgrade changes. #7705 2024-08-13 13:00:52 +05:30
Aditya Toshniwal ba3deb5b9b Fixed paths for Flatpak broken after Electron changes. #7793 2024-08-12 13:32:58 +05:30
Khushboo Vashi fb0022923a Fix import Export Server loading issue, affected due to SchemaView component changes. 2024-08-12 11:27:21 +05:30
dependabot[bot] ccaea82341 Javascript dependency: Bump svgo from 2.8.0 to 3.3.2 in /web
Bumps [svgo](https://github.com/svg/svgo) from 2.8.0 to 3.3.2.
- [Release notes](https://github.com/svg/svgo/releases)
- [Commits](https://github.com/svg/svgo/compare/v2.8.0...v3.3.2)

---
updated-dependencies:
- dependency-name: svgo
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 11:23:30 +05:30
dependabot[bot] 1a143c9e2c Python dependency: Update setuptools requirement in /web/regression
Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v71.0.0...v72.1.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 17:19:46 +05:30
dependabot[bot] 23d15bde8b Python dependency: Update setuptools requirement from ==71.* to ==72.*
Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v71.0.0...v72.1.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 17:19:29 +05:30
dependabot[bot] 49c55b41a2 Javascript dependency: Bump @mui/icons-material in /web
Bumps [@mui/icons-material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-icons-material) from 5.16.5 to 5.16.6.
- [Release notes](https://github.com/mui/material-ui/releases)
- [Changelog](https://github.com/mui/material-ui/blob/v5.16.6/CHANGELOG.md)
- [Commits](https://github.com/mui/material-ui/commits/v5.16.6/packages/mui-icons-material)

---
updated-dependencies:
- dependency-name: "@mui/icons-material"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 17:18:50 +05:30
dependabot[bot] 4f822c8021 Javascript dependency: Bump @tanstack/react-virtual in /web
Bumps [@tanstack/react-virtual](https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual) from 3.8.3 to 3.8.4.
- [Release notes](https://github.com/TanStack/virtual/releases)
- [Commits](https://github.com/TanStack/virtual/commits/v3.8.4/packages/react-virtual)

---
updated-dependencies:
- dependency-name: "@tanstack/react-virtual"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 17:18:30 +05:30
Akshay Joshi c3801165a5 Set the yarn version for Wheel Package. 2024-08-08 15:01:27 +05:30
dependabot[bot] fdf58f2d85 Python dependency: Update keyring requirement in /web/regression
Updates the requirements on [keyring](https://github.com/jaraco/keyring) to permit the latest version.
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v24.0.0...v25.2.1)

---
updated-dependencies:
- dependency-name: keyring
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 13:42:32 +05:30
dependabot[bot] 9a3b3530a6 Python dependency: Update keyring requirement from ==24.* to ==25.*
Updates the requirements on [keyring](https://github.com/jaraco/keyring) to permit the latest version.
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v24.0.0...v25.2.1)

---
updated-dependencies:
- dependency-name: keyring
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 13:42:16 +05:30
dependabot[bot] b280c91013 Javascript dependency: Bump svgo-loader from 2.2.2 to 4.0.0 in /web
Bumps [svgo-loader](https://github.com/svg/svgo-loader) from 2.2.2 to 4.0.0.
- [Release notes](https://github.com/svg/svgo-loader/releases)
- [Commits](https://github.com/svg/svgo-loader/commits/v4.0.0)

---
updated-dependencies:
- dependency-name: svgo-loader
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 13:19:48 +05:30
dependabot[bot] 95f6a63c70 Javascript dependency: Bump xterm-addon-search in /web (#7758)
Bumps [xterm-addon-search](https://github.com/xtermjs/xterm.js) from 0.8.2 to 0.13.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits/0.13)

---
updated-dependencies:
- dependency-name: xterm-addon-search
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 13:14:22 +05:30
dependabot[bot] 96965797f6 Javascript dependency: Bump xterm from 4.19.0 to 5.3.0 in /web
Bumps [xterm](https://github.com/xtermjs/xterm.js) from 4.19.0 to 5.3.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/compare/4.19.0...5.3.0)

---
updated-dependencies:
- dependency-name: xterm
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 13:14:02 +05:30
dependabot[bot] 7b5d96c5a6 Javascript dependency: Bump axios from 1.7.2 to 1.7.3 in /runtime
Bumps [axios](https://github.com/axios/axios) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.2...v1.7.3)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 13:12:54 +05:30
Akshay Joshi 00e2480b7b 1) Fixed an issue where refreshing the Schema Diff tool opened in a new tab caused an error. #7499
2) Fixed an issue where the Generate Script ignored filter conditions when a parent node was selected. #7682
2024-08-08 13:02:38 +05:30
Khushboo Vashi f98e3fa1fd Update release note. 2024-08-07 14:50:55 +05:30
Rohit Bhati 81d8ea56f8 Fix server heartbeat logging error after deleting the server. #7540 2024-08-07 14:32:48 +05:30
Pravesh Sharma 654dc0e2d7 Fixed an issue where the value in the find box is not updating with selected text in editor if find is already open and re-triggered. #7775 2024-08-06 11:59:22 +05:30
Khushboo Vashi b4e4b9d498 Fix an issue where the wheel package is not getting installed on the arm64-based macOS version < 14. #7754 2024-08-05 12:31:28 +05:30
Ashesh Vashi 52af8d3e49 Introduce custom React Hook useSchemaState to simplify SchemaView component. #7776
Changes include: 
- Simplify current SchemaView code
- Add ability to reuse the schema data & state management implementation outside the SchemaDialogView component.
- Further split components in small and manageable separate files.
- Removed the 'DepListenerContext' context as there was no need for separate context.
- Added a reload functionality in the 'useSchemaState'
- Changes in feature tests.
2024-08-02 09:59:01 +05:30
Aditya Toshniwal 546806c40c Always use latest version of Electron in package.json and in builds 2024-08-01 16:03:05 +05:30
Aditya Toshniwal ca7e93cc2c Fix failing windows builds by using Yarn v3 2024-08-01 15:00:30 +05:30
Aditya Toshniwal 4ee76ba8c9 Build changes to sign pgAdmin4.exe and use yarn v3 on linux builds 2024-08-01 13:18:01 +05:30
Rohit Bhati 5d7ec14076 Fixed delete object(shortcut key) affecting both text and Object Explorer items. #7683 2024-08-01 11:48:16 +05:30
Akshay Joshi 88f033e2a8 Update release note 2024-08-01 11:38:23 +05:30
Pravesh Sharma 2e878a3fb2 Fixed an issue where the REVOKE statement in the create script was throwing an error if the role contained special characters. #7737 2024-08-01 11:34:00 +05:30
Aditya Toshniwal c6e7ce03cc Upgrade react-data-grid fork to latest and change pgAdmin accordingly. #7705 2024-07-31 19:12:36 +05:30
Kundan c45fb47b08 Make PgTreeView react component more customisable 2024-07-31 14:07:47 +05:30
Akshay Joshi d39fe78239 Added release note for v8.11 2024-07-31 11:34:29 +05:30
Pravesh Sharma 0399d0be15 Updated the documentation for web server authentication. #7728 2024-07-31 11:26:19 +05:30
Rohit Bhati 19237fe247 Fixed an issue where delete object(shortcut key) affecting both text and Object Explorer items. #7683 2024-07-31 11:25:08 +05:30
Akshay Joshi 729c370125 Fixed build issues after package upgrade. 2024-07-30 13:41:56 +05:30
Akshay Joshi 636c224bd0 Updated JavaScript and Python packages according to Dependabot recommendations 2024-07-29 19:34:43 +05:30
Aditya Toshniwal ab25238f17 Fix an issue where file dialog is not focussed on open in electron. 2024-07-29 10:18:39 +05:30
Khushboo Vashi b9ffbf73e0 Fixed an issue where only psycopg-binary should be installed but PIP wheel installing psycopg-c as well. 2024-07-29 10:16:42 +05:30
Aditya Toshniwal 23cad47f8d Fix a syntax error in postinst when installing Ubuntu 24 deb package 2024-07-25 19:26:12 +05:30
Aditya Toshniwal 5fd308aafc Show OS name and version details in about dialog for Linux platforms. 2024-07-25 17:51:31 +05:30
Aditya Toshniwal 88bee071e5 Make sure AppArmor profile is added only for Ubuntu 24 and above. 2024-07-25 17:27:18 +05:30
Khushboo Vashi 1fcb1f0228 Fix Dashboard UI issues. 2024-07-25 12:43:02 +05:30
Aditya Toshniwal 9544ce1d18 Add apparmor profile for pgAdmin when installing on Debian based OS 2024-07-25 11:40:19 +05:30
Akshay Joshi 8cf15ea17c Change the release date in the release note. 2024-07-24 15:47:42 +05:30
Khushboo Vashi bc10fa5c03 Fix an issue where a cloud instance deployment fails due to wrong import. 2024-07-24 15:34:30 +05:30
Aditya Toshniwal 1d5f5a2067 Fixed an issue where ERD Open/Save shorcuts were not working on Windows/Linux. #7639 2024-07-24 15:11:05 +05:30
jcodeio 70a7c42be1 Set the MFA OTP field to be a normal textbox to eliminate the save password prompt. 2024-07-24 15:00:27 +05:30
Khushboo Vashi d0e6090761 Fix Dashboard State refresh issue with the active sessions only. 2024-07-24 13:45:52 +05:30
Akshay Joshi 87ba177ff3 Fixed linter error. 2024-07-24 13:02:46 +05:30
Akshay Joshi 0511554db9 The following issues have been fixed:
1) White screen issue after closing the Macro dialog.
2) Schema Diff database and schema selection issue.
3) CSV download issue.
2024-07-24 12:54:20 +05:30
Aditya Toshniwal 026292f07b Fix tab focus issue when closing query tool using keyboard shortcut. #6572 2024-07-23 17:02:39 +05:30
Aditya Toshniwal 18d507780d Hide the 'Toggle Full Screen' menu on Linux as it hides the top menu completely making the app unable to use. #7494 2024-07-23 15:17:29 +05:30
Khushboo Vashi 3aedae1436 Call loadNextPage function only when it is required while loading the table. 2024-07-22 14:15:03 +05:30
Akshay Joshi 9cbb9a3d24 Update version for release 8.10 2024-07-22 11:34:28 +05:30
Rohit Bhati b173fda116 Fix tab focus issue while deleting multiple tabs using shortcut key. #6572 2024-07-22 11:32:26 +05:30
Libor M. d9ccef94a2 Czech translation for version 8.10 2024-07-22 11:20:35 +05:30
Akshay Joshi eff63931f2 Update message catalogs. 2024-07-19 15:23:19 +05:30
Pravesh Sharma 3ec676194b Fixed an issue where boolean values in node details of graphical explain plan were not interpreted correctly. #7662 2024-07-18 17:59:58 +05:30
Rohit Bhati 8030bc708b Add support for highlighting selection matches in the query editor. #7530 2024-07-18 17:51:20 +05:30
Khushboo Vashi fd78faf0cc Update release notes. 2024-07-18 14:30:45 +05:30
Pravesh Sharma bfcdcdc4f1 Add a precautionary check for the query tool connection cursor to fix the error 'NoneType' object has no attribute '_query'. #7660 2024-07-18 14:24:50 +05:30
Pravesh Sharma a75273a714 Updated entrypoint.sh to utilize the email-validator package for email validation. #7297 2024-07-18 11:05:37 +05:30
Khushboo Vashi c9cc5257c7 Fix Server Log minor UI issues. 2024-07-18 09:40:49 +05:30
Aditya Toshniwal 3b4fa40253 Update release notes. 2024-07-17 18:22:51 +05:30
Rohit Bhati 9ee896aac4 Add a keyboard shortcut to close active tab panel. #6572 2024-07-17 18:19:36 +05:30
Aditya Toshniwal 01cb1839f8 Fix git commit hash details for pip build. #7623
Skip regression folder when creating pip builds to reduce bundle size.
2024-07-17 14:30:02 +05:30
Yogesh Mahajan 1eb07608e9 Ensure processes related notifiers disappears. #7219 2024-07-17 13:07:52 +05:30
Aditya Toshniwal 8e16e000c3 Fix issues found in electron testing. #7494 2024-07-16 20:29:10 +05:30
Akshay Joshi 64d7c2c62d Update release notes. 2024-07-16 17:52:15 +05:30
Yogesh Mahajan e028ebc152 Ensure pgadmin does not try to connect to the server if saved password is not available. #7679 2024-07-16 17:46:40 +05:30
Anil Sahoo 30051f3257 Fixed an issue where Reassign/Drop Owned dialog not opening for Role. #7663 2024-07-16 17:42:16 +05:30
Yogesh Mahajan c4a52687b6 Ensure that pgAdmin works when opened in an iframe. #7681 2024-07-16 16:32:52 +05:30
Pravesh Sharma a06c13623d Fixed an issue where theme preview under theme options was broken in pgAdmin server mode. #7626 2024-07-16 10:25:48 +05:30
Khushboo Vashi b303693ae8 Fix Dashboard minor UI issues.
Fix the issue where PG logs doesn't display in CSV or JSON format even if it gets selected through the UI.
2024-07-11 10:26:42 +05:30
Khushboo Vashi 6b012193e3 Pin Psycopg Binary packages to 3.1.19 for the ARM64 MacOS platform wheel packages. 2024-07-10 17:43:13 +05:30
Aditya Toshniwal cd6ff48cc0 Fix query tool, ERD closing issue in Electron. #7494 2024-07-10 15:01:35 +05:30
Aditya Toshniwal dbdea181a9 Fixed an issue where pop-up notifications from Object Explorer wouldn't get dismissed automatically if the Query Tool was opened. #6571 2024-07-09 16:25:04 +05:30
Rohit Bhati 721a5da895 Fixed an issue where Generate Script button should be disabled if no objects are selected in the schema diff result. #7638 2024-07-09 13:44:04 +05:30
Khushboo Vashi 8578acd915 Update release notes. 2024-07-09 12:57:48 +05:30
Pravesh Sharma f3c95d9643 Fix an issue where the preferences JSON file has no effect when an external database is used. #7618 2024-07-09 12:52:23 +05:30
Anil Sahoo 5c5b61c4db Fixed an issue where paste operation in query tool data grid should skip bytea columns and put the value as NULL instead. #3199 2024-07-09 10:33:29 +05:30
Aditya Toshniwal 760e38293c Fix issues found during Electron testing. #7494
Fix application crash when using users dialog. #7607
2024-07-08 19:24:29 +05:30
Aditya Toshniwal dcfef154ce - Set the browser target to ES6 and reduce the JS bundle size considerably
- Upgrade ESLint to v9.x and migrate the .eslintrc.js file to make it work
2024-07-04 18:25:47 +05:30
Pravesh Sharma 10b2e91e29 Update react-diagrams library which is used in ERD to the latest version. #7644
Added patch for DataGridView failing when adding a new row.
2024-07-03 18:19:27 +05:30
Khushboo Vashi 4f415f9768 Added support for viewing PostgreSQL Server Logs in Text, CSV and JSON formats. #3981 2024-07-03 16:17:29 +05:30
Akshay Joshi 93b5bc6bf8 Update release note. 2024-07-03 11:54:49 +05:30
Aditya Toshniwal 60c2d0e23b Update more JS packages. 2024-07-03 11:46:16 +05:30
dependabot[bot] c44710c9d7 Javascript dependency: Bump @eslint/js from 9.5.0 to 9.6.0 in /runtime (#7646)
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.5.0 to 9.6.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.6.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-02 11:49:44 +05:30
dependabot[bot] 37e034b3ef Python dependency: Bump psycopg[c] in /web/regression
Bumps [psycopg[c]](https://github.com/psycopg/psycopg) from 3.1.19 to 3.2.1.
- [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst)
- [Commits](https://github.com/psycopg/psycopg/compare/3.1.19...3.2.1)

---
updated-dependencies:
- dependency-name: psycopg[c]
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-02 11:49:10 +05:30
dependabot[bot] adb8fdb096 Python dependency: Bump psycopg[c] from 3.1.19 to 3.2.1
Bumps [psycopg[c]](https://github.com/psycopg/psycopg) from 3.1.19 to 3.2.1.
- [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst)
- [Commits](https://github.com/psycopg/psycopg/compare/3.1.19...3.2.1)

---
updated-dependencies:
- dependency-name: psycopg[c]
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-02 11:48:54 +05:30
Rohit Bhati 22cdb86aab Fix issue with missing new added records in download file. #5345 2024-07-02 11:48:13 +05:30
Akshay Joshi 576dc55615 Fixed the permission denied issue for functions of the pgstattuple extension when accessing statistics with a non-admin user. #7035 2024-07-02 11:47:43 +05:30
Aditya Toshniwal f8fa1cf6d6 - Fix few SonarQube issues.
- Cleanup NW.js related stuff.
2024-07-02 10:34:30 +05:30
Aditya Toshniwal 3bb9f0ba8c Remove support for Python 3.7 as Debian 10 is EOL. 2024-07-01 12:39:12 +05:30
Aditya Toshniwal 91eb60a363 Replace pgAdmin NW.js container with Electron container. #7494 2024-07-01 11:27:42 +05:30
Pravesh Sharma 4457a6a6a1 Updated to the latest version of the Notistack library. #7501 2024-07-01 11:26:45 +05:30
Akshay Joshi 6f8cde67a6 Update release note. 2024-06-28 15:09:34 +05:30
Pravesh Sharma 391db5131d Fixed an issue where sorting the database activity table on the dashboard by any column caused the details to expand in the wrong position. #7554 2024-06-28 14:47:26 +05:30
Pravesh Sharma 62a61b403e Fixed an issue where users could not autofill their saved passwords in the connect server dialog in the browser. #7627 2024-06-28 14:44:39 +05:30
Aditya Toshniwal e8f108154d Fix build failures. 2024-06-27 18:03:10 +05:30
Akshay Joshi ccd84b7c2a Update JS packages. 2024-06-27 14:08:01 +05:30
dependabot[bot] 522f3458f6 Python dependency: Update psutil requirement in /web/regression
Updates the requirements on [psutil](https://github.com/giampaolo/psutil) to permit the latest version.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.0...release-6.0.0)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-27 13:26:38 +05:30
dependabot[bot] 7efed95ac3 Python dependency: Update psutil requirement from ==5.9.* to ==6.0.*
Updates the requirements on [psutil](https://github.com/giampaolo/psutil) to permit the latest version.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.0...release-6.0.0)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-27 13:25:47 +05:30
dependabot[bot] 754cd223c1 Python dependency: Bump selenium in /web/regression
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.21.0 to 4.22.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.21.0...selenium-4.22.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-27 13:23:57 +05:30
dependabot[bot] a0b7dcca64 Python dependency: Bump azure-identity in /web/regression
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.16.1 to 1.17.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.16.1...azure-identity_1.17.1)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-27 13:23:39 +05:30
dependabot[bot] 8876183981 Python dependency: Bump azure-identity from 1.16.1 to 1.17.1
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.16.1 to 1.17.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.16.1...azure-identity_1.17.1)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-27 13:23:20 +05:30
Aditya Toshniwal feb3093c6d Automatically apply virtualization in the DataGridView of SchemaView if the schema contains only one collection. #7607 2024-06-27 13:21:18 +05:30
Aditya Toshniwal 6f96f67655 Add the git commit hash details to the About dialog. #7623 2024-06-27 13:20:00 +05:30
Akshay Joshi 3be2221948 Ensure that pgAdmin 4 is compatible with PostgreSQL v17. #7537 2024-06-27 13:18:26 +05:30
Akshay Joshi 7d0bbf30ec Fixed the issue causing the 2FA dialog to appear distorted. 2024-06-25 14:46:30 +05:30
Akshay Joshi 9933a9a9e5 Update version for release v8.9 2024-06-24 20:10:25 +05:30
Akshay Joshi 227f047810 Revert last commit as attr not working. 2024-06-24 19:08:33 +05:30
Khushboo Vashi 95ce9e976e Set the pgAdmin executable file permissions to 755 for the web rpm build. 2024-06-24 18:20:19 +05:30
Khushboo Vashi 4a645343a9 Give the proper file/directory permissions to the pgAdmin installation directory on RHEL-8. This is the only platform that has write permission for the executable files after installation which is fixed. 2024-06-24 17:09:28 +05:30
Khushboo Vashi 3d107ea618 One more attempt to set RHEL-8 file permissions. 2024-06-24 16:05:22 +05:30
Libor M 19f5e41b09 Czech translation for version 8.9 2024-06-24 11:55:52 +05:30
Khushboo Vashi f7eeefa3a9 Fix file permissions for RHEL 8. 2024-06-24 10:54:39 +05:30
Yogesh Mahajan a8f0f5bb4f Fix one more styling issue broken due to JSS changes. #7363 2024-06-24 10:44:05 +05:30
Aditya Toshniwal 44d40f0785 Fixed an issue where delete button in Users data was enabled for incorrect rows. #7616 2024-06-24 10:31:47 +05:30
Domenico Sgarbossa d0b2752fea Italian translation updated for v8.9 2024-06-21 13:14:48 +05:30
Akshay Joshi 8e0c080faf Update message catalogs for v8.9 2024-06-20 18:12:16 +05:30
Yogesh Mahajan 6410ae5f69 Fixed some more styling issues broken due to JSS changes. #7363 2024-06-20 17:18:38 +05:30
Khushboo Vashi a60cbf00c8 Do not change the file permission for the Redhat installation directory. 2024-06-20 17:11:23 +05:30
Akshay Joshi 3e7a220225 Fixed an issue where the schema diff incorrectly marked tables as different due to schema-qualified trigger functions in the trigger definitions. #7523 2024-06-20 16:55:38 +05:30
Aditya Toshniwal 9026f46220 Fixed an issue where object explorer toolbar button not showing shortcut in the tooltip.#7316 2024-06-20 11:31:11 +05:30
Yogesh Mahajan fedbe550db Optimise logic used for OS theme syncing. #5932 2024-06-20 11:05:47 +05:30
Khushboo Vashi 2b45a1f7d5 Fix Redhat installation directory permission. 2024-06-20 10:39:24 +05:30
Aditya Toshniwal 31a91409a0 Fixed incorrect sorting of size in statistics tab. #7542 2024-06-19 18:27:43 +05:30
Aditya Toshniwal 9279393dcd Add missing files from last commit. #7593 2024-06-19 17:57:34 +05:30
Aditya Toshniwal 20caa63508 Fixed an issue where query tool auto-complete stops working after connection change. #7593 2024-06-19 17:55:40 +05:30
Akshay Joshi 6984e97f8d Use correct for loop syntax. 2024-06-19 13:15:45 +05:30
Yogesh Mahajan 95ffd1b9a1 More fixes for issues reported while testing changes related to makeStyle JSS changes and auto-theme. #7363 2024-06-19 11:54:18 +05:30
Akshay Joshi 4c5639bee6 Correct the alignment. 2024-06-18 18:25:38 +05:30
Kolja d4b72e2d89 Detect if pgAdmin is running in Flatpak. 2024-06-18 18:22:13 +05:30
Akshay Joshi 0452828cc7 1) Change the cursor to a pointer for JSON editor toolbar buttons.
2) Remove the extra scrollbar in JSON editor.
3) Set the focus on the PSQL tool.
2024-06-18 16:42:17 +05:30
Aditya Toshniwal 007c4840c2 Fix failing feature tests 2024-06-18 14:02:23 +05:30
Akshay Joshi 2b04f3ca1d Fixed incorrect handling of the code smell for the reject API call 2024-06-17 18:22:38 +05:30
Anil Sahoo 3706c3126a Fixed migration failure while using external database. #7556 2024-06-17 18:12:31 +05:30
Rohit Bhati 1ba9f005a7 Ensure that user should be able to clear comments in RLS Policy. 2024-06-17 18:11:57 +05:30
Aditya Toshniwal c3d6f8887a Fixed an issue where syntax highlighting is incorrect for C-Style escape string. #7485 2024-06-17 17:05:36 +05:30
Aditya Toshniwal 439d6cb28f Fixed an issue where backslash breaks syntax highlighting. #7528 2024-06-17 16:16:15 +05:30
Yogesh Mahajan b0e7847962 Fixed bugs found while testing makeStyles JSS changes. #7363 2024-06-17 15:45:40 +05:30
Anil Sahoo a946c70869 Fixed an issue where changing a column name should reflect in all the constraints in table object dialog and ERD table dialog. #7476 2024-06-17 14:07:45 +05:30
Akshay Joshi 5866da8194 Fixed SonarQube code smells. 2024-06-13 18:48:02 +05:30
Aditya Toshniwal ad34ee2699 Fixed new line indentation in query editor and add a user preference to disable it. #7295 2024-06-13 18:06:13 +05:30
Aditya Toshniwal e03d65d547 Fixed an issue where query tool shortcuts for find/replace are not working. #7555 2024-06-13 17:26:47 +05:30
Pravesh Sharma b5c8692f34 Fixed an issue where resizable data editors in query tool should not be allowed to resize beyond the app window bounds. #7241 2024-06-13 14:07:44 +05:30
Akshay Joshi f96977733f Downgrade some more packages to ensure compatibility with Debian 10 2024-06-13 12:27:24 +05:30
Akshay Joshi 33bd02d337 Downgrade boto3 to ensure compatibility with Debian 10. 2024-06-13 11:26:15 +05:30
Akshay Joshi ab01dde2ba Fixed RESQL test case. 2024-06-12 18:46:12 +05:30
Akshay Joshi dea5335ce5 Fixed the following SonarQube code smells:
1) Do not use the Array index in keys.
2) Import from the same module should be merged.
3) Mutable variables should not be exported.
4) Variables should not be initialized to undefined.
5) startswith or endswith method should be used.
6) Unwrap this unnecessarily grouped subpattern.

Additionally, addressed many other SonarQube rules.
2024-06-12 18:09:06 +05:30
Rohit Bhati 288fd7ed12 Add support for comments on RLS policy object. #7414 2024-06-12 17:18:55 +05:30
Rohit Bhati c98cea2ea9 Search Objects dialog should focus on search input on open. #7536 2024-06-12 17:17:35 +05:30
Aditya Toshniwal 056aff4742 Revert the changes done for removing support for Python 3.7 2024-06-12 16:23:27 +05:30
Yogesh Mahajan 6357672387 Provide an option to set the theme based on the OS theme. #5932 2024-06-12 16:18:37 +05:30
Yogesh Mahajan bdadc77235 Ensure preferences can be loaded using preferences.json. #7516 2024-06-12 12:07:28 +05:30
dependabot[bot] 0cb75bdcab Python dependency: Bump azure-identity in /web/regression
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.16.0 to 1.16.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.16.0...azure-identity_1.16.1)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-12 11:44:55 +05:30
dependabot[bot] bc3052ed1b Python dependency: Bump testtools from 2.7.1 to 2.7.2 in /web/regression
Bumps [testtools](https://github.com/testing-cabal/testtools) from 2.7.1 to 2.7.2.
- [Release notes](https://github.com/testing-cabal/testtools/releases)
- [Changelog](https://github.com/testing-cabal/testtools/blob/master/NEWS)
- [Commits](https://github.com/testing-cabal/testtools/compare/2.7.1...2.7.2)

---
updated-dependencies:
- dependency-name: testtools
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-12 11:44:31 +05:30
Akshay Joshi df2f3460f0 Fix the following SonarQube code smells:
1) Use the "RegExp.exec()" method instead.
2) Remove parameter form or provide default value.
3) Extract this nested ternary operation into an independent statement.
4) Replace this character class by the character itself.
5) Unnecessary use of conditional expression for default assignment.
6) Prefer using an optional chain expression instead, as it's more concise and easier to read.
2024-06-11 18:07:22 +05:30
Aditya Toshniwal bdf4f39b2b - Update release notes.
- Update more JS packages.
2024-06-11 15:28:21 +05:30
Yogesh Mahajan fff192eb95 Ensure that a user can connect to a server using SSL certificates and identity files from a shared storage. #7306 2024-06-11 14:48:11 +05:30
Akshay Joshi c47390e643 Fixed API test cases for BatchProcess 2024-06-11 12:59:48 +05:30
Ahmad fd944280f1 Fixed an issue where dark theme shows white background when all tabs are closed. #7481 2024-06-11 12:03:43 +05:30
Khushboo Vashi fa71b06874 Set the permission for the installation directory without fakeroot. 2024-06-11 10:41:47 +05:30
Khushboo Vashi 591308fbe8 chmod doesn't work with fakeroot in a single command. 2024-06-10 18:45:44 +05:30
Akshay Joshi a03b513389 Revert changes for yarn.lock 2024-06-10 18:15:05 +05:30
Akshay Joshi 8857f0d179 Fix SonarQube code smells:
1) String literals should not be duplicated.
2) Prefer using an optional chain expression instead, as it's more concise and easier to read.
3) Expected the Promise rejection reason to be an Error.
2024-06-10 18:04:32 +05:30
Khushboo Vashi 2d2aa45ec5 Another attempt to fix Debian installation directory permission. 2024-06-10 16:50:59 +05:30
Khushboo Vashi ba5b66ff4f Fix Debian installation directory permission. 2024-06-10 16:11:09 +05:30
oon arfiandwiandWeblate Admin 285e3afeee Indonesian translation for version 8.9
* Added translation using Weblate (Indonesian)

* Added translation using Weblate (Indonesian)

* Translated using Weblate (Indonesian)

---------

Co-authored-by: Weblate Admin <admin@example.com>
2024-06-10 11:33:03 +05:30
Akshay Joshi b3cf9ce185 Unpin dnspython from 'regression/requirements.txt' as eventlet issue is fixed. 2024-06-07 17:52:46 +05:30
dependabot[bot] 18deb16e36 Python dependency: Bump pbr from 5.11.1 to 6.0.0 in /web/regression
Bumps [pbr](https://docs.openstack.org/pbr/latest/) from 5.11.1 to 6.0.0.

---
updated-dependencies:
- dependency-name: pbr
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 16:53:22 +05:30
dependabot[bot] 1a1266a5d6 Python dependency: Bump azure-identity from 1.15.0 to 1.16.0
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.15.0...azure-identity_1.16.0)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 16:49:53 +05:30
dependabot[bot] 7cdcaa0533 Python dependency: Bump azure-mgmt-resource in /web/regression
Bumps [azure-mgmt-resource](https://github.com/Azure/azure-sdk-for-python) from 23.0.1 to 23.1.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-mgmt-resource_23.0.1...azure-mgmt-resource_23.1.1)

---
updated-dependencies:
- dependency-name: azure-mgmt-resource
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 16:49:30 +05:30
dependabot[bot] d5f6802e5f Python dependency: Bump azure-identity in /web/regression
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.15.0...azure-identity_1.16.0)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 16:49:11 +05:30
dependabot[bot] bc1a2a0b4d Python dependency: Bump selenium in /web/regression
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.19.0 to 4.21.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.19.0...selenium-4.21.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 16:39:53 +05:30
dependabot[bot] 7cb1d74c05 Python dependency: Update setuptools requirement from ==69.* to ==70.*
Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v69.0.0...v70.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 16:39:31 +05:30
dependabot[bot] 02dbb20b41 Python dependency: Update setuptools requirement in /web/regression
Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v69.0.0...v70.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 16:38:56 +05:30
Akshay Joshi 6b9e3f5d1c Update release note. 2024-06-07 15:54:41 +05:30
Aditya Toshniwal 5f4db94179 Update yarn.lock file 2024-06-07 15:21:13 +05:30
Aditya Toshniwal de712b0805 - Update JS packages.
- Remove support for Python 3.7 as Debian 10 is EOL.
2024-06-07 14:17:22 +05:30
dependabot[bot] fdfd6c7792 Python dependency: Update boto3 requirement in /web/regression
Updates the requirements on [boto3](https://github.com/boto/boto3) to permit the latest version.
- [Release notes](https://github.com/boto/boto3/releases)
- [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst)
- [Commits](https://github.com/boto/boto3/compare/1.33.0...1.34.86)

---
updated-dependencies:
- dependency-name: boto3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 18:14:14 +05:30
dependabot[bot] c6739ebd6b Python dependency: Bump dnspython from 2.3.0 to 2.6.1 in /web/regression
Bumps [dnspython](https://github.com/rthalley/dnspython) from 2.3.0 to 2.6.1.
- [Release notes](https://github.com/rthalley/dnspython/releases)
- [Changelog](https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst)
- [Commits](https://github.com/rthalley/dnspython/compare/v2.3.0...v2.6.1)

---
updated-dependencies:
- dependency-name: dnspython
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 18:11:47 +05:30
dependabot[bot] f673e68677 Python dependency: Bump eventlet from 0.34.2 to 0.36.1
Bumps [eventlet](https://github.com/eventlet/eventlet) from 0.34.2 to 0.36.1.
- [Changelog](https://github.com/eventlet/eventlet/blob/master/NEWS)
- [Commits](https://github.com/eventlet/eventlet/compare/v0.34.2...0.36.1)

---
updated-dependencies:
- dependency-name: eventlet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 18:09:33 +05:30
Rohit Bhati 85d4473af4 Disable the query tool editor input if any SQL is being loaded to prevent users from typing. #6357 2024-06-06 18:06:49 +05:30
dependabot[bot] 45cafd2cff Python dependency: Update boto3 requirement from ==1.33.* to ==1.34.*
Updates the requirements on [boto3](https://github.com/boto/boto3) to permit the latest version.
- [Release notes](https://github.com/boto/boto3/releases)
- [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst)
- [Commits](https://github.com/boto/boto3/compare/1.33.0...1.34.86)

---
updated-dependencies:
- dependency-name: boto3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 18:03:50 +05:30
dependabot[bot] d5ac441ab7 Python dependency: Bump psycopg[c] in /web/regression
Bumps [psycopg[c]](https://github.com/psycopg/psycopg) from 3.1.12 to 3.1.19.
- [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst)
- [Commits](https://github.com/psycopg/psycopg/compare/3.1.12...3.1.19)

---
updated-dependencies:
- dependency-name: psycopg[c]
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 18:01:42 +05:30
dependabot[bot] 8e372f194c Python dependency: Update bcrypt requirement in /web/regression
Updates the requirements on [bcrypt](https://github.com/pyca/bcrypt) to permit the latest version.
- [Changelog](https://github.com/pyca/bcrypt/blob/main/release.py)
- [Commits](https://github.com/pyca/bcrypt/compare/4.0.0...4.1.2)

---
updated-dependencies:
- dependency-name: bcrypt
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 17:58:48 +05:30
dependabot[bot] 55ad67ac52 Javascript dependency: Bump eslint from 9.2.0 to 9.4.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.2.0 to 9.4.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.2.0...v9.4.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 17:58:03 +05:30
Yogesh Mahajan cc999ae5a5 Remove the usage of MUI makeStyles as it doesn't support React 18. #7363 2024-06-06 17:13:12 +05:30
Khushboo Vashi f66bd4bcfb Remove the use of is_normalized function for Python 3.7. 2024-06-05 14:11:59 +05:30
Akshay Joshi dfaea944f0 Revert "Detect if running in Flatpak; patch pythonPath and pgadminFile accordingly."
This reverts commit d98ee76b8d.
2024-06-04 20:35:25 +05:30
Akshay Joshi ff287f32c5 Update version for release v8.8 2024-06-04 18:22:35 +05:30
Akshay Joshi a46f99d360 1) Partially fixed the issue with inserting characters at the end of the line by setting 'Underline query at cursor?' to false by default.
2) Update release note.
2024-06-04 18:18:16 +05:30
Kolja d98ee76b8d Detect if running in Flatpak; patch pythonPath and pgadminFile accordingly. 2024-06-04 15:36:08 +05:30
Akshay Joshi 29a526626f Fixed an issue where the size displayed as 'NaN B' for all databases in the statistics tab. #7524 2024-06-03 17:10:11 +05:30
Khushboo Vashi 6509e45b6f Fix the issue where docker with SSL v8.7 fails to start. #7520 2024-05-31 14:29:36 +05:30
Akshay Joshi 2fb5b26adb Update release note. 2024-05-31 11:26:15 +05:30
Khushboo Vashi 24aefd2c7a Fix an issue where user authentication fails with special characters in password. #5785 2024-05-31 11:22:36 +05:30
Pravesh Sharma b5b0538fe3 Fixed an issue where canceling a query without privilege does not display any message on query tool. #7480 2024-05-31 11:19:44 +05:30
Khushboo Vashi 2ab2d6b57c Fix the issue where the query tool documentation screen-shot displays the incorrect function key. #7507 2024-05-28 12:10:14 +05:30
Khushboo Vashi bc83955418 Fix mod_wsgi version mismatch issue for RHEL platforms. 2024-05-28 11:50:21 +05:30
Akshay Joshi 8f8f8ec79a Update version for release v8.7 2024-05-27 16:14:43 +05:30
Anil Sahoo 6690b16f8a Added support for executing the query at the cursor position in the query tool. #6841 2024-05-27 16:11:59 +05:30
Akshay Joshi 16b9b103a2 Resolved the intermittent issue with macros not displaying in the macros dialog. 2024-05-27 15:56:02 +05:30
Aditya Toshniwal b1f70b02ff Update object explorer icons for EPAS and replication related nodes 2024-05-27 12:29:38 +05:30
Domenico Sgarbossa 2a1394ce1f Italian translation updated for v8.7 2024-05-27 11:24:51 +05:30
Akshay Joshi 908d7e88b6 Updated release note. 2024-05-24 15:33:59 +05:30
Rohit Bhati 4e3ec91d23 Added support for the 'Add to macros' feature and fixed various usability issues. #4735 2024-05-24 15:30:31 +05:30
Pravesh Sharma 36a71dc7fa 1. Fixed an issue where resetting the password from the password reset link was not working. #7500
2. Fixed an issue where the recover password button was enabled even when no email id was provided. #7487
2024-05-24 13:18:05 +05:30
Akshay Joshi 6179638fee Set CAP_NET_BIND_SERVICE to Python 3.12 in Dockerfile. 2024-05-24 12:22:32 +05:30
Akshay Joshi 57e1dfa7ec Update message catalogs for v8.7 2024-05-23 18:47:54 +05:30
Akshay Joshi 2aa881d143 Fixed the Docker build by adding Corepack and changing the version of libzstd. 2024-05-23 18:19:08 +05:30
Khushboo Vashi e9f3747969 Fix the issue where pgAdmin fails to start when Ubuntu OS is upgraded to a major version. #7439 2024-05-23 14:34:08 +05:30
Ahmad 5c30695d66 Fixed Typos 2024-05-23 12:52:41 +05:30
Dave Page 301920747d Update Windows build instructions to match modern reality. 2024-05-21 16:44:15 +01:00
Dave Page 7c5554ea31 Fix the filename for the zlib library.
Our build originally relied on a cmake/msbuild build of zlib,
however, this is not the recommended way of building zlib
(although it is the obvious one). We now build using nmake and
copy, which results in a minor change of the filename.

This is also consistent with what the PostgreSQL build system
expects.
2024-05-21 16:29:59 +01:00
Akshay Joshi 6c7bc1c815 Ensure that Schema Diff does not indicate a table as different when the trigger names are the same but the trigger function body is different. #5762 2024-05-21 16:04:25 +05:30
Aditya Toshniwal dd45f06d50 Added support for viewing PGD Clusters. #7215 2024-05-20 16:54:49 +05:30
Aditya Toshniwal d6a9f8a06c Fixed issues found in testing of react-table upgrade changes. #7419
UI fixes and improvement in System Stats Dashboard.
2024-05-20 10:41:55 +05:30
Aditya Toshniwal 9647482791 Fixed incorrect highlighting for C-Style escape strings in SQL editor. #7485 2024-05-20 10:13:30 +05:30
Akshay Joshi ad5bb0b190 Copy yarnrc.yml file to rectify the OSX builds. 2024-05-16 13:12:37 +05:30
Ashesh Vashi b9088b0afa Use index as a key for the table header group in PgReactTableStyled component. #7419 2024-05-15 17:06:45 +05:30
Akshay Joshi 5edeee8017 Another attempt to rectify the OSX builds. 2024-05-15 16:28:47 +05:30
Akshay Joshi 95466b9d6c Update release note. 2024-05-15 15:30:45 +05:30
Pravesh Sharma 1c44cfb714 Update the documentation for preferences dialog and keyboard shortcuts. #7349, #7458 2024-05-15 15:21:23 +05:30
Akshay Joshi f833cea0dd Trying to fix the OSX build failure 2024-05-15 15:05:59 +05:30
Akshay Joshi 2dcaf0b4ed Update release note 2024-05-15 13:11:28 +05:30
Aditya Toshniwal 0e786c519e Replace the current FontAwesome based PSQL tool icon with MUI Terminal icon. #7472 2024-05-14 11:05:27 +05:30
Aditya Toshniwal 3b20cad5bb Fixed an issue where drag and drop publication and subscription name in SQL editors was not working. #6086 2024-05-09 15:34:44 +05:30
Pravesh Sharma afc28d95cf 1. Disable ERD for system Catalogs. #5849
2. Disable Debugger for system catalogs. #6060
3. Fixed an issue where the keyboard shortcut for launching the debugger from Object Explorer was not working.
2024-05-08 15:29:01 +05:30
Akshay Joshi 9edc1d225e Fixed an issue of the pgAdmin window size increasing each time it was reopened. #6464 2024-05-07 17:35:03 +05:30
dependabot[bot] e5f2506663 Python dependency: Bump sphinx from 7.3.5 to 7.3.7 in /tools
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.3.5 to 7.3.7.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.3.5...v7.3.7)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 16:44:08 +05:30
Aditya Toshniwal 5ec6faff13 Upgrade react-table from v7 to v8. #7419 2024-05-07 16:31:04 +05:30
RohitBhati8269 3e6bd29198 Enhance the Delete dialog by highlighting the names of the objects to be deleted in bold. #7411 2024-05-07 11:56:50 +05:30
dependabot[bot] f2036164d0 Javascript dependency: Bump eslint from 9.0.0 to 9.2.0 in /runtime
Bumps [eslint](https://github.com/eslint/eslint) from 9.0.0 to 9.2.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.0.0...v9.2.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 11:48:08 +05:30
Akshay Joshi 1c458b82cd Update release note. 2024-05-06 11:22:12 +05:30
Aditya Toshniwal b85d8c1446 Changes in Query Tool, Debugger, and ERD Tool shortcuts to remove the use of Accesskey which will allow them to be customized. #7192 2024-05-06 11:15:44 +05:30
Akshay Joshi 0ac006fde1 Fixed typo in the previos commit for GitHub action 2024-05-02 16:22:12 +05:30
Aditya Toshniwal 1e6fab92b0 Add PostgreSQL installation bin directory to path of MacOS GitHub action 2024-05-02 12:52:09 +05:30
Aditya Toshniwal 099577959b Attempt to fix GitHub action failing for MacOS 2024-05-02 12:33:19 +05:30
Akshay Joshi c2b7e521d3 Use correct installation path of PostgreSQL in GitHub action. For reference https://docs.brew.sh/FAQ#why-is-the-default-installation-prefix-opthomebrew-on-apple-silicon 2024-04-30 17:36:55 +05:30
Akshay Joshi 36aaf38379 Added sudo while creating tablespace directory on macOS 2024-04-30 16:47:01 +05:30
Akshay Joshi 99c688f894 Update version for release 8.6 2024-04-29 13:42:28 +05:30
Khushboo Vashi f4761f55f7 Fixed Multi-Factor Authentication bypass vulnerability (CVE-2024-4215). #7425 2024-04-29 13:41:02 +05:30
Pravesh Sharma e18a8bf620 Fixed issue found during testing of #7163. 2024-04-29 13:12:21 +05:30
Pravesh Sharma 7c6fdcb12e Disabled auto-fill on password fields. #2410 2024-04-29 11:44:17 +05:30
Khushboo Vashi f88c89f3eb Fixed an issue when closing the materialized view data second tab; it raises the error that the 'MViewCommand' object has no attribute 'auto_commit'. 2024-04-26 15:53:15 +05:30
Domenico Sgarbossa 5949696ded Italian translation updated for v8.6 2024-04-26 14:43:17 +05:30
Akshay Joshi f724578463 Fixed API test cases for exec/call procedure. 2024-04-26 13:01:35 +05:30
Khushboo Vashi 2324337149 Trigger the browser tree destroyed event so the consequences of destroying the tree are handled properly. 2024-04-26 11:59:53 +05:30
Akshay Joshi 2dd009eb7c Update message catalogs for version 8.6 2024-04-25 18:03:28 +05:30
Akshay Joshi 92bb931b0a Fixed an issue where incorrect select/exec scripts were generated for functions/procedures. #7334 2024-04-25 17:24:02 +05:30
Khushboo Vashi eeee45e57c For some Debian platforms, the python3-dbus package is available instead of python-dbus. 2024-04-25 15:02:50 +05:30
Khushboo Vashi 10ba029980 Fixed an issue where connection to the database is not automatically re-established after connectivity drop. #7372 2024-04-24 14:37:33 +05:30
Pravesh Sharma fd65f1b644 Fixed all input boxes in pgAdmin to show browser auto-fill only where it is relevant. #2410 2024-04-24 11:27:08 +05:30
Akshay Joshi 9f6ddd3cf9 Fixed violates check constraint issue when creating a pgAgent schedule. #7390 2024-04-23 17:27:11 +05:30
Yogesh Mahajan 673b5ea5a1 Fix the date-time picker broken after MUI5 upgrade. 2024-04-23 17:03:34 +05:30
Khushboo Vashi 84c024f6fa Fixed an issue when closing the view data second tab; it raises the error that the 'ViewCommand' object has no attribute 'auto_commit'. #7384 2024-04-23 14:45:15 +05:30
Akshay Joshi 3e0ade5a59 Fixed an issue where pressing backspace should remove the spaces and not the entire tab width, on enabling 'Use spaces?' in the preferences. #7317 2024-04-22 12:33:38 +05:30
dependabot[bot] db23330939 Python dependency: Bump selenium in /web/regression (#7325)
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.10.0 to 4.19.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.10.0...selenium-4.19.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 14:03:28 +05:30
Akshay Joshi bb24c445e6 Update yarn.lock in runtime 2024-04-18 13:03:10 +05:30
dependabot[bot] b44b06591b Javascript dependency: Bump eslint from 8.52.0 to 9.0.0 in /runtime (#7361)
Bumps [eslint](https://github.com/eslint/eslint) from 8.52.0 to 9.0.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.52.0...v9.0.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 12:48:45 +05:30
Akshay Joshi b475be93fa Update yarn.lock file 2024-04-18 12:46:00 +05:30
dependabot[bot] 3e47abed8f Python dependency: Bump sphinx from 7.2.6 to 7.3.5 in /tools (#7387)
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.2.6 to 7.3.5.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v7.3.5)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 12:15:30 +05:30
Yogesh Mahajan f0185fbe7f Fix issues reported while testing MUI5 library update. 2024-04-17 17:31:55 +05:30
Khushboo Vashi 5f689a56dd Install dbus-python, an in-direct dependency of the Keyring package as a system package for Debian platforms. #7173 2024-04-17 16:21:50 +05:30
Pravesh Sharma 0d1e3f36e1 Revert "Fixed an issue where function arguments were getting enclosed in double quotes if written in upper case. #7222"
This reverts commit fc4b419987.
2024-04-17 11:33:25 +05:30
Aditya Toshniwal 29ccdb3242 Fixed an issue where debugger was not scrolling automatically on stepping. #7275 2024-04-16 15:33:42 +05:30
Akshay Joshi 0546e79aed Made adjustments to ensure the correct version of Authlib is used. #7362 2024-04-16 12:56:42 +05:30
Pravesh Sharma 5ee403fec7 Upgraded Flask, Flask-Security-Too, Werkzeug, and other dependencies, ensuring compatibility with Python 3.7. #7362 2024-04-16 12:23:03 +05:30
Neville Li 5a3fa59741 Fix id_token KeyError on OAuth2 logout. 2024-04-16 12:19:06 +05:30
Akshay Joshi 60497df04b Updated release note. 2024-04-15 11:54:31 +05:30
Pravesh Sharma f143aa05a3 Added support for excluding multiple tables while taking Backup. #7163 2024-04-15 11:50:08 +05:30
Aditya Toshniwal ee0687ecd3 Add a function getQueryAt to get the SQL query at given cursor position from a CodeMirror input 2024-04-13 15:47:18 +05:30
Aditya Toshniwal e612140473 Update release notes. 2024-04-10 18:00:57 +05:30
Yogesh Mahajan e384c9665a Fixed a XSS vulnerability in the /settings/store endpoint. #7282 2024-04-10 17:58:51 +05:30
Akshay Joshi 30d2d1b23e Fixed the following code smells:
1) useState call is not destructured into value + setter pair.
2) A fragment with only one child is redundant.
3) Unnecessary '.apply()' and '.call()'.
4) Expected the Promise rejection reason to be an Error.
2024-04-09 19:18:56 +05:30
Aditya Toshniwal ed2a73f7ff Fix artifact archive error for EPAS tests on github workflows 2024-04-09 09:52:39 +05:30
Aditya Toshniwal b5e5f8ac4c Update release notes. 2024-04-09 08:37:41 +05:30
Yogesh Mahajan 102e0a9839 - Update MUI v4 to v5
- Remove the SCSS dependency completely and use MUI for theming.
- Update - date-fns, @date-io, notistack. Remove - popper.js, sass-loader.
- Cleanup webpack config.
- Port PSQL tool to use MUI themes instead of SCSS theme.
- Theme change will reflect realtime without refreshing pgAdmin.
2024-04-09 08:21:14 +05:30
Akshay Joshi edec9adbfb Fixed SonarQube code smell 'Unnecessary use of boolean literals in conditional expression'. 2024-04-08 17:19:51 +05:30
Aditya Toshniwal c9345ad618 Fixed an issue where double dollar quoted code is treated as string in syntax highlighter. #7294 2024-04-08 15:32:01 +05:30
Pravesh Sharma fc4b419987 Fixed an issue where function arguments were getting enclosed in double quotes if written in upper case. #7222 2024-04-04 16:48:00 +05:30
Akshay Joshi 475e3689f7 Added the new columns last_seq_scan and last_idx_scan from the pg_stat_all_tables and pg_stat_all_indexes tables respectively to the Statistics tab. #6728 2024-04-04 16:39:12 +05:30
Akshay Joshi c90508cece Update version for release 8.5 2024-04-01 17:01:55 +05:30
Pravesh Sharma a85d907351 Fixed an issue where user was unable to share a newly registered server. #7111
* Fixed an issue where the clear SSH tunnel password option was disabled in desktop mode.
2024-04-01 16:57:47 +05:30
Akshay Joshi 9f31ec115a Fixed Schema Diff issues while comparing Materialized View. #7271 2024-04-01 16:56:18 +05:30
Khushboo Vashi fbbbfe22dd Fixed a remote code execution issue in the validate binary path (CVE-2024-3116). #7326 2024-04-01 11:34:01 +05:30
Libor M 26b279cc8a Czech translation for version 8.5 2024-04-01 11:09:48 +05:30
Domenico Sgarbossa 3ac271e702 Italian translation update for v8.5 2024-03-29 11:41:44 +05:30
JyotiEdb 4ae9132b59 Fixed an issue with empty locale provider while editing collation. #5611 2024-03-29 11:40:44 +05:30
Akshay Joshi 3fa48f26b8 Update message catalogs for v8.5 2024-03-28 17:58:24 +05:30
Akshay Joshi 00e17ef152 Fixed an issue where the 'Save Password' option for SSH tunneling password was consistently disabled. #7139 2024-03-28 13:58:03 +05:30
Aditya ToshniwalandAkshay Joshi ace73ebb60 Added support for viewing Log Based Clusters. #7216
Co-authored-by: Akshay Joshi <akshay.joshi@enterprisedb.com>
2024-03-28 12:19:34 +05:30
JyotiEdb 5931162556 Fixed an issue where maximize icon is missing from query tool panel. #7218 2024-03-28 11:53:56 +05:30
JyotiEdb 053b1e3d69 Fixed issues in create collation. #5611 2024-03-27 17:30:16 +05:30
Pravesh Sharma 082fb165d3 Implemented shortcut mapping for the edit menu in the query tool. 2024-03-27 16:41:08 +05:30
Anil Sahoo a02ebe192b Fixed rollback and commit button activation on execute button click. #7248 2024-03-27 16:38:42 +05:30
Akshay Joshi 8ab78dc40d Fixed an issue where serial, bigserial, and smallserial columns were always shown as different in the schema diff. 2024-03-27 16:11:40 +05:30
Khushboo Vashi 6ecd7b20f7 Update release notes. 2024-03-27 11:50:31 +05:30
Benjamin Blattberg 48a86f6c38 Fix the issue where the update-user CLI command doesn't change the password. #7304 2024-03-27 11:47:58 +05:30
Pravesh Sharma b742487dc3 Fixed an issue where table properties were not updating from properties dialog. #7210 2024-03-27 11:41:01 +05:30
Akshay Joshi 089f890f2e Fixed an issue where Triggers, Rules, Indexes were absent from the Schema Diff when comparing views. #7271
Fixed an issue in Schema Diff where Columns with sequences get altered unnecessarily. #4413
2024-03-27 11:40:23 +05:30
Khushboo Vashi 1f0a2fd150 Update release notes. 2024-03-26 18:24:44 +05:30
István Lantos 715839d295 Expose UNIX socket in entrypoint.sh for Docker implementation. #7221 2024-03-26 18:22:29 +05:30
Pravesh Sharma 1bcf343ceb Fixed an issue where taking backup of a shared server was using server owner's user name. #7255 2024-03-26 11:28:20 +05:30
Anil Sahoo e99fc02f9e Fixed issue related to email authentication of Two-factor authentication. #7308 2024-03-26 11:27:35 +05:30
Aditya Toshniwal c0a1429664 Fix failing feature tests 2024-03-26 11:20:04 +05:30
Aditya Toshniwal cc1ce09b73 More CodeMirror fixes. #7268
Fix query tool autocomplete results when cursor is in between the SQL query. #7299
Fix an issue in query tool where custom keyboard shortcuts are not working for some. #7305
2024-03-23 18:22:06 +05:30
JyotiEdb 25074e46b4 Added support for provider, deterministic, version and RULES parameter while creating collation. #5611 2024-03-19 16:52:22 +05:30
Anil Sahoo cee0945a78 Revert the changes made to include a separate 'ALTER TABLE ...' query for setting defaults, as per the previous fix for issue #7165. 2024-03-19 15:12:04 +05:30
Aditya Toshniwal 24b0c2e919 Update axios to the latest version 2024-03-18 16:23:54 +05:30
Akshay Joshi c56aef335b Fixed RESQL test cases for DBMS Schedule 2024-03-18 13:44:07 +05:30
Akshay Joshi 097b630738 Added support for EDB Job Scheduler. #7098 2024-03-18 11:53:59 +05:30
Aditya Toshniwal f351b10ed0 Fix an issue in query tool where toggle case of selected text loses selection. #7277
Also make changes to give pgAdmin shortcuts higher priority over CodeMirror default shortcuts.
2024-03-14 18:18:53 +05:30
Pravesh Sharma 1a02d13a28 Bug fixes and improvements in pgAdmin CLI. #7116 2024-03-14 18:12:28 +05:30
Anil Sahoo bece59d4b3 Fixed schema diff wrong query generation for table, foreign table and sequence. #7165 2024-03-14 11:21:19 +05:30
Akshay Joshi 30398219f4 Replace actions/upload-artifact@v3 with actions/upload-artifact@v4 for all the github actions. 2024-03-12 16:04:15 +05:30
Akshay Joshi 8545d846c0 Replace actions/checkout@v3 with actions/checkout@v4 for all the github actions. 2024-03-12 15:26:31 +05:30
Akshay Joshi 6d8c4bdb82 1) Checking actions/checkout@v4 working or not.
2) Added edb job scheduler command for EPAS 16 only.
2024-03-12 14:45:44 +05:30
Anthony DeBarros 496acf5598 Polish up the system_stats not installed message. 2024-03-12 10:50:09 +05:30
Aditya Toshniwal 36228fece7 Add a workaround in pgAdmin code to make Flask-Migrat>=4.0.6 work 2024-03-11 17:17:40 +05:30
Aditya Toshniwal 794c7cb335 Fixed multiple editor related issues:
1. Replace option in query tool edit menu is not working on non-Mac OS. #7262
2. Format SQL shortcut and multiline selection are not working. #7268
3. "Use Spaces?" Preference of Editor is not working. #7269
2024-03-11 16:52:56 +05:30
Akshay Joshi 9c9766ca0a Update release note. 2024-03-08 11:49:36 +05:30
Aditya Toshniwal 7374997425 Fix an issue in table dialog where changing column name was not syncing table constraints appropriately. #7229 2024-03-08 11:45:32 +05:30
Florian 134e651989 Added support to exclude multiple tables while taking backup. #7163 2024-03-08 11:44:29 +05:30
Akshay Joshi 8b130b3351 Added corepack enable command. 2024-03-04 17:30:16 +05:30
Akshay Joshi d26182d178 Update yarn version for OSX build functions. 2024-03-04 15:23:07 +05:30
Akshay Joshi 8ddcdbf499 Updated version for release 8.4 2024-03-04 14:50:23 +05:30
Akshay Joshi 4e49d752fb Unsafe Deserialization and Remote Code Execution by an Authenticated user in pgAdmin 4 (CVE-2024-2044). 2024-03-04 13:22:09 +05:30
Libor M 0cbb5324bf Czech translation for version 8.4 2024-03-04 11:12:05 +05:30
Akshay Joshi 1e90245650 Update release note 2024-03-01 12:14:43 +05:30
Florian 3425bc0349 Ensure that the OAuth2 session is logged out when users log out from pgAdmin. #7193 2024-03-01 12:09:01 +05:30
Domenico Sgarbossa 7593bb98c1 Italian translation update for v8.4 2024-03-01 11:56:47 +05:30
Akshay Joshi d8c007f644 Fixed duplicate explicit target name issue in the documentation. 2024-02-29 19:14:59 +05:30
Akshay Joshi 0ea51861c7 Update message catalogs for v8.4 2024-02-29 18:40:50 +05:30
Akshay Joshi cfbf4d8452 Updated URL in the container deployment docs. 2024-02-29 18:37:34 +05:30
Pravesh Sharma af88851228 Remove role related checks on the UI dashboard when terminating session/query and let PostgreSQL take care of it. #7217 2024-02-29 16:43:07 +05:30
Akshay Joshi 864f23c60d Update release note. 2024-02-29 11:53:33 +05:30
Anil Sahoo 8dffcf842f Added documentation for System Statistics tab. #7148 2024-02-29 11:34:54 +05:30
Pravesh Sharma 6971d8c3a1 Fixed an issue where preferences.json mapped to container was not having any effect on preferences. #6058 2024-02-27 12:11:59 +05:30
Aditya Toshniwal 43f4cc4e17 Fix an issue where type column in dependencies tab is not showing correct label. #7225 2024-02-26 11:59:30 +05:30
Aditya Toshniwal a5530f59f7 Fix sonarqube issues for the rule - 'If' statement should not be the only statement in 'else' block 2024-02-26 11:55:36 +05:30
Aditya Toshniwal e272552780 Fix doc builds failing because of release notes update 2024-02-23 14:13:06 +05:30
Aditya Toshniwal dfbbc3b1a1 Update release notes. 2024-02-23 14:08:56 +05:30
Anil Sahoo a8ab714606 Fix multiple issues where PasswordExecCommand was not working in server mode and PasswordExecCommand was not loaded when importing servers. #6792 2024-02-23 14:05:26 +05:30
Pravesh Sharma 2ab419c8a5 Fixed EPAS RESQL test case failure. 2024-02-23 11:25:54 +05:30
Aditya Toshniwal 29e85a6b06 Fix SonarQube issues 2024-02-22 16:54:20 +05:30
Khushboo Vashi 125d36e7d2 Update release notes. 2024-02-22 16:43:50 +05:30
Florian 16406f88a7 Add support for JSON log format. #7138 2024-02-22 16:39:25 +05:30
Pravesh Sharma dee1a2ae6b Upgrade python package Flask-Security-Too to 5.3.* #7234 2024-02-22 14:43:48 +05:30
Aditya Toshniwal 1f879b3e87 Upgrade python package cryptography to 42.0.* 2024-02-22 11:57:44 +05:30
Aditya Toshniwal b5bd236387 Fix edit menu related issues of query tool codemirror 2024-02-21 15:54:57 +05:30
Akshay Joshi 41812c9fde Update release note. 2024-02-21 11:25:55 +05:30
Pravesh Sharma 4faf2a3c6d Fixed an issue where dependencies and dependents were not showing if a composite type is used as an attribute in another composite type. #7027 2024-02-21 11:18:44 +05:30
Aditya Toshniwal d3ede3151a Upgrade CodeMirror from version 5 to 6. #7097 2024-02-21 11:15:25 +05:30
Aditya Toshniwal 721290b1e9 Fix an issue where type column in dependents/dependencies tab is not showing correct label. #7225 2024-02-20 16:23:05 +05:30
Khushboo Vashi 10929157b4 Update Release Note. 2024-02-15 15:00:48 +05:30
Yogesh Mahajan 5a74022e8a Allow preferences customization using a configuration file. #6058 2024-02-15 14:58:31 +05:30
Akshay Joshi a74b0232f9 Update release note 2024-02-15 11:41:42 +05:30
Anil Sahoo e81a036850 Fix an issue where the scripts created by generate script of Schema diff for Table with sequence was not working earlier. #7165 2024-02-15 11:38:44 +05:30
Khushboo Vashi 389896411a Update Release Notes. 2024-02-14 11:24:20 +05:30
octo-dama 6adae46a4c Add --yes option for skipping the confirmation prompt while deleting the user via CLI for scripting purpose. #7204 2024-02-14 11:20:44 +05:30
Akshay Joshi 96ed38292f Added release note for v8.4 2024-02-09 16:49:58 +05:30
Anil Sahoo 47b2bc8a83 1) Fix the tabbed panel backward/forward shortcut for tabs. #6808
2) Remove shortcuts for the dialog tab backward/forward.
3) Used hotkeys.js in place of mousetrap for listening to keyboard shortcuts.
2024-02-09 16:33:30 +05:30
Anil Sahoo 9ad223c41c Fix an issue where constraint check control is enabled in edit table dialog. #7164 2024-02-09 16:26:46 +05:30
Ashesh Vashi d09833744a Separate the application name, branding & version information from the configuration file. #7187 2024-02-09 16:25:03 +05:30
Akshay Joshi c92e9c2953 Fixed all broken submenus of the Help menu due to the SonarQube fix. 2024-02-08 12:24:40 +05:30
Akshay Joshi af1f4b3aa7 Update version for release v8.3 2024-02-05 12:38:40 +05:30
Domenico Sgarbossa 4b40aac89f Italian translation for version 8.3 2024-02-05 10:48:35 +05:30
Libor M 0ff34ab6ae Czech translation for version 8.3 2024-02-05 10:48:04 +05:30
Yogesh Mahajan 9462296d33 Fixed API tests failed due to #7113 changes. 2024-02-05 10:47:43 +05:30
Aditya Toshniwal 0904adaed0 Update release notes 2024-02-02 12:55:13 +05:30
Pravesh Sharma f7045b58d4 Fixed an issue where format sql was messing up operator. #5083
- The formatting is done on client side now using sql-formattor JS lib. Backend API based formatting is removed.
- Added new options data type case, expression width, function case, lines between queries, logical operator new line and new line before semicolon available in the new lib.
- Removed old options comma-first notations, re-indent aligned, re-indent, strip comments and wrap after N characters as not available in the new library.
- Capitalise casing is replaced with Preserve casing as it is not supported by the new library.
- Also fixes #6785, #6990, #7115.
2024-02-02 12:28:25 +05:30
Sebastian Bogaci 459121566c Fix wrong default for FORCE_LOWER in the FLASK_GRAVATAR module #7175 2024-02-02 11:47:14 +05:30
Akshay Joshi e12e8bc9cf Update message catalogs for v8.3 2024-02-01 21:27:06 +05:30
Kristof Mattei 956401015d Fixed an issue pgAdmin fails to launch due to inconsistent PATH variable name on windows. #7153, #7125 2024-02-01 21:07:39 +05:30
Khushboo Vashi 1ac385be27 Update documentation for creating the configuration database. 2024-02-01 14:37:09 +05:30
Anil Sahoo 8145e042a6 Fix a backend server error when creating a named restore point. #7166 2024-02-01 14:20:22 +05:30
Aditya Toshniwal cdf49d6300 Fix failing feature tests 2024-01-30 13:01:57 +05:30
Aditya Toshniwal 028b70203c Fix SonarQube bugs 2024-01-29 18:39:30 +05:30
Akshay Joshi e23ef5d9df Update release note. 2024-01-29 14:54:53 +05:30
Yogesh Mahajan 711181c752 Ensure that the correct SQL is generated when changing the column data type to "char". #7113 2024-01-29 14:53:03 +05:30
Pravesh Sharma 3de19f66f2 Added support for column storage syntax while creating table. #6450 2024-01-29 11:32:34 +05:30
Akshay Joshi 4c5324bd99 Fixed API test cases for Backup. 2024-01-25 18:07:40 +05:30
Akshay Joshi 639a28fbfc Fixed code smell 'Prefer using an optional chain expression instead, as it's more concise and easier to read'. 2024-01-25 16:51:40 +05:30
Akshay Joshi 41fe1db884 Fixed PEP8 2024-01-25 12:51:29 +05:30
Akshay Joshi cafe69c235 Fixed SonarQube Bugs and API test cases. 2024-01-25 12:46:55 +05:30
Akshay Joshi d55c35c0e8 Revert yarnrc.yml and yarn.lock 2024-01-24 18:55:32 +05:30
Akshay Joshi 0e0cbc40b8 Fixed SonarQube code smell Replace the unused local variable with '_'. 2024-01-24 18:33:43 +05:30
Aditya Toshniwal 47aa070cc3 Update release notes 2024-01-22 16:17:58 +05:30
Yogesh Mahajan 4fe47b8e92 Ensure that password exec command is included in exported server data json. #6792 2024-01-22 13:38:34 +05:30
Aditya Toshniwal e80e82cd7f Allow drag-n-drop columns collection tree node as comma separated columns. #4419 2024-01-22 13:19:04 +05:30
Khushboo Vashi 29f13f8832 Update release notes. 2024-01-22 12:41:43 +05:30
Akshay Joshi 81fccc87b5 Added support to rename columns in Views. #6380 2024-01-22 12:27:55 +05:30
Aditya Toshniwal 93d25eea0b Use COOKIE_DEFAULT_PATH or SCRIPT_NAME in session cookie path. #6557 2024-01-22 12:25:20 +05:30
Yogesh Mahajan a166f8dc89 Skip debugger test cases to fix "too many clients" error on github actions. 2024-01-18 16:41:18 +05:30
Aditya Toshniwal d26c167c76 Improve auto-focus of editable data grid when adding/editing rows 2024-01-17 18:38:00 +05:30
Akshay Joshi 60983a25d2 Updated release note. 2024-01-12 17:48:56 +05:30
Yogesh Mahajan 2d08b0dd13 Added configurable parameter to enable support for PasswordExecCommand in server mode. #6792 2024-01-12 17:34:40 +05:30
Pravesh Sharma b28df5874e Fixed an issue where multiple errors were showing if user does not have connect privileges. #7073 2024-01-12 17:20:51 +05:30
Nikhil Mohite ad0567bd85 Add support for selecting a schema in the backup database dialog with no tables, mviews, views or foreign tables. #7053
Fixed a UI border issue on the dependencies tab for columns with icon. #7055
2024-01-12 17:19:27 +05:30
Pravesh Sharma 701085adaf Fixed an issue where group membership information was displayed incorrectly. #7085 2024-01-12 16:48:49 +05:30
Akshay Joshi 5240e8ccf8 Added BYPASSRLS|NOBYPASSRLS option while creating a Role. #6392 2024-01-11 19:14:01 +05:30
Akshay Joshi 4ce65ea770 Added setuptools in the requirements for Python version >= 3.12 2024-01-08 15:40:02 +05:30
Akshay Joshi 19b8d05e65 Update version for release v8.2 2024-01-08 15:03:32 +05:30
Akshay Joshi f5ba42bec8 Fixed API test case for Foreign Table. 2024-01-08 15:02:08 +05:30
Nikhil Mohite 26ec59ab5f Limit the keyring calls based on save_password flag of server config. 2024-01-08 14:04:38 +05:30
Akshay Joshi 30509d1bc1 Added copy server support, allowing the duplication of existing servers with the option to make certain modifications. #6085 (#7106)
Added copy server support, allowing the duplication of existing servers with the option to make certain modifications. #6085
2024-01-08 12:16:49 +05:30
Akshay Joshi 5e710f7ee3 Fixed an issue where Schema Diff not generating difference for missing columns. #7104 2024-01-08 09:39:39 +05:30
Libor M ec5ea7e207 Czech translation for version v8.2 2024-01-08 09:09:08 +05:30
Domenico Sgarbossa 9b5dc28bac Updated Italian translation for v8.2 2024-01-05 11:14:03 +05:30
Akshay Joshi db727381b1 Update message catalogs for v8.2 2024-01-04 19:01:29 +05:30
Khushboo Vashi fdaedacf40 Fixed multiple CLI issues. #2483 2024-01-03 16:09:42 +05:30
Khushboo Vashi 4d74f84d80 Fix a regression issue caused by #6815 fix related to import server issue for external users. 2024-01-03 15:53:41 +05:30
Akshay Joshi fcfe7cfb7c Fixed an issue where DB Restrictions were not visible on the server dialog. #7059 2024-01-01 16:26:02 +05:30
Aditya Toshniwal 5248055a01 Fixed an issue where auto commit/rollback setting not persisting across query tool connection change. #7091 2024-01-01 15:34:40 +05:30
Akshay Joshi 740ce15bd7 Update copyright notices for 2024 2024-01-01 14:13:48 +05:30
Nikhil Mohite 2621050066 Fix an issue where connection string sequences do not persist after updating server details. #7041 2024-01-01 14:11:17 +05:30
Akshay Joshi 2b736c18ab Ensure that eventlet's subprocess should be used following the resolution of an issue with Python 3.12 by eventlet. #6926 2024-01-01 14:01:56 +05:30
Khushboo Vashi 3fa4e82af9 Introduce LDAP configuration parameter LDAP_IGNORE_MALFORMED_SCHEMA to ignore fetching schema from the LDAP server. #7062 2024-01-01 11:04:57 +05:30
Pravesh Sharma fd8af4034a Fixed an issue where user is not able to cancel or terminate active queries from dashboard. #7078 2023-12-29 15:40:36 +05:30
Aditya Toshniwal e837de5e8f Fixed browser autocomplete related issues on pgAdmin authentication related pages. #7082 2023-12-28 16:29:15 +05:30
Aditya Toshniwal 01a118d495 Fixed an error-'amname' when generating ERD for database containing parition tables. #7064 2023-12-28 15:27:30 +05:30
Nikhil Mohite ec12dc5288 Fixed the following issues found in testing #5908:
1. Filter buttons remain highlighted after promotion but the button is disabled.
2. Data changes are getting committed even when Auto commit is turned off on the promoted query tool window.
2023-12-27 13:36:20 +05:30
Nikhil Mohite a4e9f04a2e Fixed an issue where changes done to a node using edit dialog are not reflecting on the properties tab if the properties tab is active. #7041 2023-12-27 11:06:04 +05:30
Aditya Toshniwal 6d399f4fd7 Explicitly set max_connections to 100 for Python test cases to fit Git action MacOS test cases 2023-12-25 12:04:10 +05:30
Pravesh Sharma cede5cf899 Fixed an issue where object explorer last tree state was not saving. #7066 2023-12-25 11:55:09 +05:30
Aditya Toshniwal 41a62c8082 Fix JS test cases failing on Windows OS 2023-12-23 16:08:41 +05:30
Akshay Joshi 8c06d93303 Fixed an issue where an error occurred in the SQL tab when using an extended index(pgroonga). #7002 2023-12-22 13:59:51 +05:30
Akshay Joshi 9ccdaf73cd Ensure that the 'Dbo' schema is displayed as a regular schema rather than a system catalog schema. #7061 2023-12-21 18:52:27 +05:30
Aditya Toshniwal 09b83e54a2 Fixed an issue where pgAgent job schedule dialog is not opening for edit. #7070 2023-12-21 17:49:01 +05:30
Aditya Toshniwal c8d6ff8a6d Fixed an issue where query tool title did not change after 'Save As' until any new change is made. #6193 2023-12-21 17:41:27 +05:30
Khushboo Vashi c85a9be621 Fix an issue where the server-group node is getting registered twice for the first time. 2023-12-21 14:39:29 +05:30
Khushboo Vashi 0d287df6dd Administer pgAdmin Users and Preferences Using the Command Line Interface (CLI). #2483 2023-12-21 12:07:26 +05:30
Akshay Joshi a973c9c62c Remove EPAS 11 and add EPAS 16 in the GitHub actions. 2023-12-20 12:08:19 +05:30
Pravesh Sharma 2d60bc2800 Fixed an issue where export servers was not adding extension if not specified. #6781 2023-12-20 11:36:43 +05:30
Akshay Joshi a22b2a6074 Added keep-alive support for SSH sessions when connecting to a PostgreSQL server via an SSH tunnel. #7016 2023-12-19 16:16:03 +05:30
Nikhil Mohite 04580652ab Allow users to convert View/Edit table into a Query tool to enable editing the SQL generated. #5908 2023-12-19 15:52:57 +05:30
Khushboo Vashi 4db13facf7 Install setuptools separately as it is no longer a core venv dependency in Python 3.12. 2023-12-18 16:06:19 +05:30
Khushboo Vashi adab656a79 Fixes for Python 3.12 compatibility:
- Upgrade testtools package
- Use platstdlib instead of stdlib to get the path
2023-12-18 13:27:05 +05:30
Khushboo Vashi 92549af3d4 Replaced distutils.sysconfig.get_python_lib with sysconfig.get_path. 2023-12-18 12:21:20 +05:30
Akshay Joshi 9379df2543 Update version for release 8.1 2023-12-11 12:49:43 +05:30
Anil Sahoo 4490b623f8 Fixed an issue where option key was not registering in PSQL tool. #6968 2023-12-11 11:28:33 +05:30
Domenico Sgarbossa 371bec7f19 Italian translations update for v8.1 2023-12-11 10:58:33 +05:30
Pravesh Sharma a01b0973fc Fixed an issue where syntax error was not highlighting for explain query. #6887 2023-12-11 10:57:17 +05:30
Akshay Joshi 75a1b4b17e Update message catalog for v8.1 2023-12-07 20:06:01 +05:30
Aditya Toshniwal 51b02ae6d4 Fix few accessibility related issues. #6991 2023-12-06 11:18:23 +05:30
Akshay Joshi e207a82dbb Remove the 'Close Window' submenu specifically for OSX to prevent unintended closure of the entire application. #6814 (partial fixed) 2023-12-05 12:29:28 +05:30
Anil Sahoo 9cf3288934 Fixed an issue where option key was not registering in PSQL tool. #6968 2023-12-05 11:59:27 +05:30
Pravesh Sharma e64f4f632d 1. Fixed an issue where all rows and filter rows buttons of object explorer toolbar were disabled for views and other supported nodes. #7011
2. Fixed an issue where View/Edit data -> Filter dialog was not editable for catalog objects.
2023-12-04 17:19:05 +05:30
Anil Sahoo 4b71519b80 Rename all references of 'Execute query' to 'Execute script' to be more relevant. #6842 2023-12-04 12:28:53 +05:30
Yogesh Mahajan 4e2aa82ddd Provide a way to bypass the SSL cert verification for OAuth2 provider. #6095 2023-12-04 11:19:14 +05:30
Akshay Joshi 444f3a3189 Update release note. 2023-12-01 13:05:56 +05:30
Akshay Joshi 2b2ff0d260 Ensure that indexes created by constraints are visible in the object explorer when "Show system objects" is enabled. #6717 2023-12-01 13:02:21 +05:30
Anil Sahoo f2876cabe8 1. Fixed an issue where database name was missing in an error message if name contains any special characters. #6488
2. Add a confirmation dialog before closing a query tool when a query is already running.
2023-11-30 18:23:52 +05:30
Aditya Toshniwal 16d1df2a1b Fixed an issue where schema diff tool is not loading preferences on start. #7017 2023-11-30 15:31:23 +05:30
Akshay Joshi fd1a0753bc Fixed an issue where the Schema was not visible in the dropdown for table properties or when creating a new table. #6964 2023-11-29 13:09:01 +05:30
Harald Dumdey c84f38ac0f Update Dockerfile. Added tzdata 2023-11-29 11:30:52 +05:30
Akshay Joshi f3fb76f669 Update release note 2023-11-28 16:46:32 +05:30
Aditya Toshniwal 377216caec Add support for generating ERD for a schema. #4580 2023-11-28 16:42:51 +05:30
Aditya Toshniwal c9590b2d62 Remove botocore from requirements as it is installed by boto3 2023-11-28 16:34:49 +05:30
dependabot[bot] 1622211b39 Python dependency: Update boto3 requirement from ==1.28.* to ==1.33.* (#7010)
Updates the requirements on [boto3](https://github.com/boto/boto3) to permit the latest version.
- [Release notes](https://github.com/boto/boto3/releases)
- [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst)
- [Commits](https://github.com/boto/boto3/compare/1.28.0...1.33.1)

---
updated-dependencies:
- dependency-name: boto3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-28 16:10:42 +05:30
dependabot[bot] 523eca5a95 Javascript dependency: Bump browserify-sign from 4.2.1 to 4.2.2 in /web (#6896)
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-28 15:57:59 +05:30
dependabot[bot] 1bebddfc7d Javascript dependency: bump html-react-parser in /web (#6931)
---
updated-dependencies:
- dependency-name: html-react-parser
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-28 15:57:15 +05:30
Nikhil Mohite 37362541bf Ensure focus is not changed to ssh tunnel password input when user explicitly focus on server password input. 2023-11-28 15:55:48 +05:30
Pravesh Sharma 412375af3c - Add support for creating a function with custom return type. #6854
- Fixed an issue where create object dialog title was not showing object type name.
2023-11-28 15:54:44 +05:30
Akshay Joshi 3bd2dec663 Fixed an issue where the Vacuum option INDEX_CLEANUP have an incorrect value ('AUTO') for database versions < 14. #6984 2023-11-28 12:32:57 +05:30
Khushboo Vashi 222e8cc1f8 Upgade yarn for Javascript style github workflow. 2023-11-27 15:53:23 +05:30
Akshay Joshi 85255b65b1 1) Ensure that the Authentication Source in the drop-down of the UserManagement dialog aligns with the entries specified for AUTHENTICATION_SOURCES in the configuration file. #6950
2) Fixed an issue where the pgAdmin page went blank when clicking the delete button in the User Management dialog. #6989
2023-11-27 14:16:49 +05:30
Akshay Joshi 338bb64a55 Fixed an issue where reading process logs throws an error when DATA_DIR is moved to a networked drive. #6803 2023-11-23 16:32:52 +05:30
Akshay Joshi a9ca7a2fd4 Update release note 2023-11-23 15:59:03 +05:30
Pravesh Sharma b51df0e5fd Fixed an issue where syntax error was not highlighting in query tool. #6887 2023-11-23 15:55:23 +05:30
Yogesh Mahajan e66cb54a58 Ensure user is not prompted for password if server password is saved and server configuration has invalid pgpass file parameter. #6934 2023-11-23 15:54:14 +05:30
Nikhil Mohite 361ae458d4 Fixed an issue where on entering full screen, the option label is not changed to 'Exit Full Screen' in desktop mode. #6921 2023-11-23 15:52:00 +05:30
Aditya Toshniwal 115208c8d8 Reverse engineer serial columns when generating ERD for database/table. #6958 2023-11-23 15:50:54 +05:30
Khushboo Vashi 9611e06dcf Upgrade yarn to fix github action failures. 2023-11-23 15:14:13 +05:30
Khushboo Vashi 22b386165d Try to fix the yarn version mismatch issue. 2023-11-23 12:46:05 +05:30
Aditya Toshniwal 19cbe8c39f More fixes related to rc-dock changes. #6479 2023-11-20 17:45:17 +05:30
Akshay Joshi d8bcc11a95 Remove EPAS 11 and added EPAS 16 in the Binary Path. 2023-11-20 17:31:39 +05:30
Akshay Joshi 9f203cf7d7 Update release note 2023-11-20 11:56:53 +05:30
Khushboo Vashi 06a612481f Update release notes. 2023-11-20 11:36:16 +05:30
Everton Seiei Arakaki 682d6597e4 Fix an issue where OAUTH_ADDITIONAL_CLAIMS does not recognise AzureAD with > 150 groups. #6835 2023-11-20 11:33:39 +05:30
Libor M a59372cbe3 Czech translation for version 8.0 2023-11-17 18:09:44 +05:30
Akshay Joshi 101f6fc103 1) Remove the version folder from the Windows Default Installation path.
2) Rename the release note to 8.0
3) Update the version for release v8.0
2023-11-17 17:52:56 +05:30
Martin Tietz 23c618e1c9 Fix more data type mismatch when checking OAUTH2 claims 2023-11-17 16:30:04 +05:30
Aditya Toshniwal 0bc044fa67 Fixed an issue where Geometry Viewer renders geometry incorrectly after trying to view 3D or non-4326 SRID geometry. #6017 2023-11-17 16:29:01 +05:30
Martin Tietz 5bdccb6e63 Fix a data type mismatch when checking OAUTH2 claims 2023-11-17 15:18:07 +05:30
Domenico Sgarbossa 6d7338e64d Update Italian translation for v7.9 2023-11-17 11:23:26 +05:30
Aditya Toshniwal 0358298090 Fix failing feature tests 2023-11-16 21:01:43 +05:30
Akshay Joshi 0e3dc74bb4 Update message catalogs for v7.9 2023-11-16 18:19:54 +05:30
Akshay Joshi 302e1acabd Fixed an issue where the data type of the array type was not visible for the column in the Foreign Table dialog. #6962 2023-11-16 17:49:26 +05:30
Aditya Toshniwal c9db4a0d16 Add DROP SQL for foreign keys in SQL generated by ERD when using WITH DROP option. #5770 2023-11-16 16:55:26 +05:30
Akshay Joshi cc239149ba Fixed and improve few API test cases. 2023-11-16 14:43:10 +05:30
Aditya Toshniwal c4a5f8d707 Fix a crash issue occurring when debugging a function with arguments when using pgAdmin with external config database. #6904 2023-11-15 17:42:58 +05:30
Aditya Toshniwal 75a2d880f6 More fixes for UI issues found when testing wcDocker changes. #6479 2023-11-14 16:47:40 +05:30
Mirko e5cba59a02 Add JSON key "SharedUsername" to servers.json example 2023-11-13 17:39:49 +05:30
Akshay Joshi 0e8868a650 Remove gettext from empty strings in the title of the storage graph. #6884 2023-11-13 16:20:51 +05:30
Anil Sahoo 7f49b891df Fix an issue in ERD tool where SQL generated is missing columns for the table. #6920 2023-11-13 13:53:10 +05:30
Akshay Joshi 0ac471d160 Fix an issue where import/export data is not working for shared servers. #6875 2023-11-13 13:40:38 +05:30
Yogesh Mahajan 370cb611d7 Clear the password field in the config database on clear saved server password. #6934 2023-11-09 13:02:19 +05:30
Nikhil Mohite d4b57edede Fixed an issue where the change server password is not working in desktop mode #6902 2023-11-09 12:06:42 +05:30
Aditya Toshniwal 85dd1e92ad Fix issues found when testing Flask upgrade and wcDocker changes. #6479 2023-11-08 18:07:32 +05:30
Aditya Toshniwal ef0b30b1ca Continue fixing multiple UI issues found when testing wcDocker changes. #6479 2023-11-06 18:08:16 +05:30
Yogesh Mahajan 0d8adf9ced Ensure backup/restore/maintenance works with invalid pgpass file parameter. #6820 2023-11-06 18:02:52 +05:30
Anil Sahoo 695c008245 Remove the max length of 255 from password exec command in server configuration dialog. #6877 2023-11-06 11:55:29 +05:30
Aditya Toshniwal 96fccd28a9 Upgrade Flask, Flask-SQLAlchemy, Flask-WTF, Flask-Babel, Flask-Security-Too, WTForms, Werkzeug and keep backward compatibility with Python 3.7 2023-11-03 18:19:01 +05:30
Akshay Joshi 5f3965ff0a 1) Replace utcnow() function with datetime.now(timezone.utc) as it is deprecated from Python v3.12.
2) Correct the URL to log an issue in pgAdmin in the ERD tool script.
2023-11-03 16:55:24 +05:30
Anil Sahoo 6062084128 Fixed the query generated when creating subscription where copy_data parameter was missing. #6817 2023-11-03 14:58:48 +05:30
Pravesh Sharma 01d1e6f706 Server config information in the about dialog should be only visible to admin users. #6769 2023-11-03 14:37:25 +05:30
Akshay Joshi 9eb7c1cbea 1) Ensure that eventlet's subprocess is used for Python versions up to 3.11 and await the issue resolution for Python versions 3.12.
2) Fixed unescape sequence for Python 3.12
2023-11-02 16:03:50 +05:30
Pravesh Sharma 5d70803d6d 1. Fixed an issue where psql was not taking the role used to connect in server properties. #5807
2. Corrected title in query tool connection link.
2023-11-02 11:00:27 +05:30
Akshay Joshi 53b5b59f56 Use notarytool instead of altool for notarization, as altool has been deprecated. (#6919) 2023-11-01 15:39:35 +00:00
Aditya Toshniwal 17acce3e7b Continue fixing multiple UI issues found when testing wcDocker changes. #6479 2023-11-01 20:52:38 +05:30
dependabot[bot] d3dd5c0b56 Python dependency: Update keyring requirement from ==23.* to ==24.* (#6552)
Updates the requirements on [keyring](https://github.com/jaraco/keyring) to permit the latest version.
- [Release notes](https://github.com/jaraco/keyring/releases)
- [Changelog](https://github.com/jaraco/keyring/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/keyring/compare/v23.0.0...v24.2.0)

---
updated-dependencies:
- dependency-name: keyring
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 17:40:46 +05:30
Khushboo Vashi 71e7a7c481 Update release notes. 2023-11-01 15:32:25 +05:30
Anil Sahoo 0b707be615 Fixed restoration of query tool database connection after dropping and re-creating the database with the same name. #6487 2023-11-01 15:27:18 +05:30
Akshay Joshi 179332ed5a Update yarn.lock file and added .yarnrc.yml 2023-10-31 16:27:42 +05:30
Yogesh Mahajan a8a7574e69 Fixed circular import error occurring while deploying cloud PostgreSQL instance from pgAdmin. #6840
Update AWS, Google Cloud lib version.
2023-10-31 14:07:34 +05:30
Aditya Toshniwal e30d2eca90 Continue fixing multiple UI and SonarQube issues found when testing wcDocker changes. #6479 2023-10-30 16:57:01 +05:30
Aditya Toshniwal 4bc6dcca67 Fix the sorting of size on the statistics panel. #6459 2023-10-30 11:23:46 +05:30
Akshay Joshi 46a8c1ad6a Use Python's subprocess module instead of the eventlet's subprocess as it is not working with Python v3.12 2023-10-27 17:23:33 +05:30
Aditya Toshniwal 3e575e2f43 Fix an annoying yarn version yml change 2023-10-27 15:54:37 +05:30
Aditya Toshniwal b11b2a2f50 Continue fixing multiple UI and SonarQube issues found when testing wcDocker changes. #6479 2023-10-27 15:51:45 +05:30
Yogesh Mahajan 1bfd8d7f3c Fix foreign table api test failures for EPAS. 2023-10-27 12:58:47 +05:30
dependabot[bot] f1da4f5de8 JS dependency: Bump @svgr/webpack from 6.5.1 to 8.1.0 in /web (#6893)
Bumps [@svgr/webpack](https://github.com/gregberge/svgr) from 6.5.1 to 8.1.0.
- [Release notes](https://github.com/gregberge/svgr/releases)
- [Changelog](https://github.com/gregberge/svgr/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gregberge/svgr/compare/v6.5.1...v8.1.0)

---
updated-dependencies:
- dependency-name: "@svgr/webpack"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-27 11:58:55 +05:30
Aditya Toshniwal 5a7583654f Move yarn to berry first before moving to 3.x 2023-10-26 15:17:41 +05:30
Aditya Toshniwal cfa7bef407 Fix the builds failing because of previous commit 2023-10-26 13:31:48 +05:30
Aditya Toshniwal 8997f616a2 Do not use minor version x when setting yarn version 2023-10-26 13:14:01 +05:30
Aditya Toshniwal f50f799b88 Use yarn version 3.x as berry is taking version 4.x now 2023-10-26 12:37:35 +05:30
Aditya Toshniwal 3bcac26ff9 Fix multiple UI and SonarQube issues found when testing wcDocker changes. #6479 2023-10-26 12:06:28 +05:30
Akshay Joshi c5f4a56c0c Fixed an issue where Schema Diff does not work when the user language is set to any language other than English in Preferences. #6784 2023-10-26 11:49:55 +05:30
dependabot[bot] d74320f06e JS dependency: Bump @babel/traverse from 7.22.5 to 7.23.2 in /web (#6881)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.5 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-26 11:43:33 +05:30
dependabot[bot] b003f76903 JS dependency: Bump react-draggable from 4.4.5 to 4.4.6 in /web (#6885)
Bumps [react-draggable](https://github.com/react-grid-layout/react-draggable) from 4.4.5 to 4.4.6.
- [Release notes](https://github.com/react-grid-layout/react-draggable/releases)
- [Changelog](https://github.com/react-grid-layout/react-draggable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-grid-layout/react-draggable/compare/v4.4.5...v4.4.6)

---
updated-dependencies:
- dependency-name: react-draggable
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-26 11:42:33 +05:30
Khushboo Vashi ebc3460fce Update release notes. 2023-10-25 18:56:40 +05:30
Aditya Toshniwal ed51fe475e Upgrade python package cryptography to latest version 2023-10-25 18:42:31 +05:30
Khushboo Vashi f2bd3933c6 Update release notes. 2023-10-23 17:50:58 +05:30
Aditya Toshniwal 862f101772 Significant changes to use ReactJS extensively.
1. Replace the current layout library wcDocker with ReactJS based rc-dock. #6479
2. Have close buttons on individual panel tabs instead of common. #2821
3. Changes in the context menu on panel tabs - Add close, close all and close others menu items. #5394
4. Allow closing all the tabs, including SQL and Properties. #4733
5. Changes in docking behaviour of different tabs based on user requests and remove lock layout menu.
6. Fix an issue where the scroll position of panels was not remembered on Firefox. #2986
7. Reset layout now will not require page refresh and is done spontaneously.
8. Use the zustand store for storing preferences instead of plain JS objects. This will help reflecting preferences immediately.
9. The above fix incorrect format (no indent) of SQL stored functions/procedures. #6720
10. New version check is moved to an async request now instead of app start to improve startup performance.
11. Remove jQuery and Bootstrap completely.
12. Replace jasmine and karma test runner with jest. Migrate all the JS test cases to jest. This will save time in writing and debugging JS tests.
13. Other important code improvements and cleanup.
2023-10-23 17:43:17 +05:30
Khushboo Vashi 6d555645e9 Update release notes. 2023-10-23 11:22:49 +05:30
Benjamin Blattberg e587ef404c Fix an issue where the default server-group is being deleted if the load-server json file contains no servers. #6602 2023-10-23 11:16:57 +05:30
Aditya Toshniwal fe753bd272 Fix doc build failure 2023-10-21 16:25:53 +05:30
Khushboo Vashi c07c153f15 Fix an issue where the browser window stuck on spinning with an Oauth user without email. #6874 2023-10-20 11:16:35 +05:30
Aditya Toshniwal 3416184236 Fix more UI issues related to System statistics dashboard 2023-10-18 13:31:43 +05:30
Aditya Toshniwal 6e3ee1c607 Fix an issue where servers are not listed in add new connection dialog. 2023-10-18 11:43:42 +05:30
Aditya Toshniwal b512404c85 Update release notes 2023-10-17 15:19:40 +05:30
Pravesh Sharma 5bb6e9133f Fixed query history slowness issue by storing query only for those having certain threshold max length. #6666 2023-10-17 15:17:53 +05:30
Aditya Toshniwal 344c236d72 Fix following issues in system stats:
1. Graphs rendering in opposite directions on tab change.
2. Y-axis label width should be dynamic.
3. Tooltip values should be formatted.
2023-10-17 15:01:52 +05:30
Khushboo Vashi b4b2a4ff67 Fix an issue where user login is not working if username/email contains single quote in server mode. #6865 2023-10-17 13:49:18 +05:30
Akshay Joshi 205a661922 Update version for v7.8 release 2023-10-16 15:11:27 +05:30
Pravesh Sharma eead9b77e7 Fixed issue where MSQL for delete column was not generating. #5749 2023-10-16 15:04:31 +05:30
Aditya Toshniwal 47e734dbf2 Fix an issue in graphical explain plan where query tool crashes when the plan has parallel workers details and sort node is clicked for details. #6858 2023-10-16 11:40:43 +05:30
Libor M ce372a73bf Czech translation for version 7.8 2023-10-16 11:25:29 +05:30
Akshay Joshi 10c5d25735 Update message catalogs 2023-10-12 17:59:09 +05:30
Akshay Joshi 81dcc91747 Added 'hostaddr' and used host string as it is while creating SSHTunnel. 2023-10-12 17:57:40 +05:30
Aditya Toshniwal 3a62fc5a2a Fix issues found during testing. #6229, #6836 2023-10-12 16:58:46 +05:30
Aditya Toshniwal 10adb6a11b Add support for setting prepare threshold in server connection. #6285 2023-10-12 16:54:06 +05:30
Khushboo Vashi 82fade7645 Fix System Stat dashboard UI issues. 2023-10-12 14:04:58 +05:30
Akshay Joshi 37dced23f0 Remove an extra space in --disable-components 2023-10-11 19:14:01 +05:30
Akshay Joshi 6f857bdbcb Replace the logic to download/install PostgreSQL on Windows in the GitHub actions. Use stack builder instead of Chocolatey. 2023-10-11 18:24:12 +05:30
Aditya Toshniwal 6ba9c192ce Fix failing JS test cases after scale related commit. #6851 2023-10-11 16:31:02 +05:30
Aditya Toshniwal 221af6caa6 Fix an issue where scale in columns is not allowed to have value as 0 or below. #6851 2023-10-11 15:06:57 +05:30
Aditya Toshniwal e22492ad51 Fixed an issue where non-super PostgreSQL users are not able to terminate their own connections from dashboard. #6836 2023-10-11 13:43:31 +05:30
Akshay Joshi 2b8efc6361 Update release note 2023-10-11 13:34:02 +05:30
Pravesh Sharma 73430a2062 Fixed an issue where user was not able to assign new/old columns as primary key once column with primary key is deleted. #5749 2023-10-11 13:29:19 +05:30
Aditya Toshniwal fc411bfc49 Allow setting custom username for shared servers, with default as username of server being shared. #6229 2023-10-11 12:56:06 +05:30
Yogesh Mahajan 4450145d31 Fixed issues reported while testing foreign table properties. #640 2023-10-11 11:53:14 +05:30
Sahil Harpal cd84200135 Fix system stat dashboard UI issues. 2023-10-11 11:27:21 +05:30
Nikhil Mohite 6997d0149e Fetch database objects after opening the backup dialog. #6799 2023-10-10 15:28:25 +05:30
Aditya Toshniwal 5981f4bd13 In GUI tests, do not try to set the binary path in preferences if it is blank 2023-10-09 12:42:52 +05:30
Anil Sahoo 5113fda7a6 Fix an issue where global/native keyboard shortcuts are not working when any cell of data output grid has focus. #6579 (#6834) 2023-10-06 13:28:16 +05:30
Yogesh Mahajan 7ce07f7dcf Fixed issues reported while testing foreign table node. #640 2023-10-06 12:28:40 +05:30
Aditya Toshniwal 078a959e3d Remove the Pillow dependency completely. 2023-10-05 12:40:29 +05:30
Dave Page b4f517f7ff Rename tasks in workflows to allow rule enforcement in Github. 2023-10-05 11:57:24 +05:30
dependabot[bot] 36dc2e9d2a JS dependency: Bump eslint from 8.47.0 to 8.50.0 in /runtime (#6789)
Bumps [eslint](https://github.com/eslint/eslint) from 8.47.0 to 8.50.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.47.0...v8.50.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-05 11:33:41 +05:30
Aditya Toshniwal 858c85adbe Upgrade Pillow to latest based on Python v3.7 compatibility. 2023-10-05 11:30:50 +05:30
dependabot[bot] 2cd86449d0 JS dependency: Bump webpack from 5.88.0 to 5.88.2 in /web (#6641)
Bumps [webpack](https://github.com/webpack/webpack) from 5.88.0 to 5.88.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.88.0...v5.88.2)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-04 18:37:38 +05:30
dependabot[bot] c37fb061bd JS dependency: Bump eslint-plugin-react in /web (#6688)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.32.2 to 7.33.2.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.32.2...v7.33.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-04 18:33:52 +05:30
dependabot[bot] dc9cc3730b Python dependency: Bump axios from 1.5.0 to 1.5.1 in /runtime (#6796)
Bumps [axios](https://github.com/axios/axios) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-04 18:25:10 +05:30
dependabot[bot] 872b60de5c Python dependency: Bump postcss from 8.4.24 to 8.4.31 in /web (#6819)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.24 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.24...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-04 18:24:46 +05:30
Aditya Toshniwal 5d2ce142dd Fixed an issue in ERD tool where the downloaded images have a few links cut. #4995 2023-10-04 18:23:41 +05:30
Akshay Joshi 9666bd6c8d 1) Added 'load_balance_hosts' connection string parameter for PG 16 and above. #6802
2) Added EPAS 11 support back as its EOL is in November.
2023-10-04 17:55:37 +05:30
Khushboo Vashi 0b3c79865e Fix the issue where backend APIs are called even if System Stat extension is not installed for the database. 2023-10-04 15:04:33 +05:30
Nikhil Mohite 9c903f944c Fixed an issue where the user is unable to select objects on the backup dialog due to tree flickring #6799. 2023-10-04 12:13:21 +05:30
Nikhil Mohite 541d9dfcb4 Fix API test cases for backup dialog. 2023-09-29 14:49:11 +05:30
Aditya Toshniwal b9d3006915 Fix failing RE-SQL test cases for foreign tables on EPAS servers. 2023-09-29 13:38:22 +05:30
Khushboo Vashi 68b7ddb592 Fix UI issues for System Statistics panel. 2023-09-28 15:23:15 +05:30
Akshay Joshi 4309aa3ba7 Ensure that the backup works properly for PG 16 on the latest docker image. #6790 2023-09-27 17:09:49 +05:30
Yogesh Mahajan f9bbadfc6a Pin the cryptography version to fix PyO3 modules initialisation error. #6718 2023-09-27 16:45:48 +05:30
Khushboo Vashi c6f8918983 Update release notes. 2023-09-27 16:06:54 +05:30
Sahil Harpal 16c95d21a7 GUI representation of the system's activity using the system_stats extension. #6797 2023-09-27 16:04:48 +05:30
Akshay Joshi bae912fa40 Added PG version 16 and removed PG version 11 from github actions. 2023-09-27 13:26:21 +05:30
Akshay Joshi ca3ec76db6 Added version PG 16 and removed PG 11 2023-09-27 12:49:16 +05:30
Akshay Joshi 4050545f7c Fixed an issue where the wrong message 'Current database has been moved or renamed' is displayed when debugging any function. #6482 2023-09-26 18:07:25 +05:30
Khushboo Vashi 975bcd9fb0 Update release notes. 2023-09-26 15:14:55 +05:30
Yogesh Mahajan 3cd547f879 Implement column node and its features for foreign table. #640, #6373, #6674 2023-09-26 15:03:03 +05:30
Akshay Joshi 5736e173ea 1) Fixed an issue where PG 16 binaries not getting copied into the docker container.
2) Remove support for PostgreSQL 11.
2023-09-26 13:45:08 +05:30
Dave Page 5a26cad588 Use PG16 as the default in the container. 2023-09-21 15:35:44 +05:30
Aditya Toshniwal 3b616b2fb1 Handle a missing case in previous commit where a PG binary may not be present on some systems. #6763 2023-09-20 12:47:06 +05:30
Aditya Toshniwal 35f05e49b3 Fix the security issue of validate bin path to consider and fix more scenarios. #6763 2023-09-20 11:17:07 +05:30
Akshay Joshi 61fa8b16c9 Update version for release 7.7 2023-09-18 18:57:29 +05:30
Pravesh Sharma 3258851425 Access method for partitions not visible when opening table properties. #6378 2023-09-18 18:49:11 +05:30
Nikhil Mohite 0f5450c6d2 Fixed the following issues found in testing of #642
1. When all nodes are collapsed & you select the schema node, table node remains partially selected.
2. When paren node is expanded with above operation, Child selection is not visible
3. Prevent scrolling to top on selection of node
4. The checkbox state is NOT remembered on switching of the tab.
2023-09-18 16:23:20 +05:30
Aditya Toshniwal 07f18a1b05 Fix an issue where user get logged out if password in changed. #6274 2023-09-18 14:06:38 +05:30
Aditya Toshniwal 02ecc82e73 Fix a security related issue where an authenticated user can run remote command using validate binary path API (CVE-2023-5002). #6763 (#6764) 2023-09-18 14:01:11 +05:30
rlbxku1r 0d111e0fb6 Update Japanese translation for v7.7 2023-09-18 13:45:13 +05:30
Domenico Sgarbossa 7af597eca2 Updated Italian translations for v7.7 2023-09-18 12:13:49 +05:30
Akshay Joshi 64c71becc6 Update message catalogs for v7.7 2023-09-14 18:06:56 +05:30
Akshay Joshi ffec77d50b Added compression method option while creating a column. #6379 2023-09-14 11:56:00 +05:30
Pravesh Sharma d69b4282c8 Fixed issues reported while testing feature #6378 2023-09-13 16:19:07 +05:30
Nikhil Mohite aa973fc8ae Added support to select/deselect objects in the Backup dialog. #642 2023-09-13 11:07:28 +05:30
Pravesh Sharma 8c91d40932 Fixed RESQL test case failure for EPAS 15. #6400 2023-09-13 10:50:29 +05:30
Aditya Toshniwal 2f5fb6a996 Fix an issue where user is not able to change the password when SMTP is not configured. #6274.
Fix an issue where changing the password shows success but the new password is not working. #6730.
2023-09-12 15:16:09 +05:30
Pravesh Sharma cfc338c5f0 Fix an issue where login form doesn't appear if internal auth source is removed. #6378 2023-09-12 11:40:34 +05:30
Anil Sahoo 32403920fe Enhancement of properties tab for column's collection by adding Primary Key and Not NULL columns. #2411 2023-09-07 11:54:02 +05:30
Akshay Joshi e9384615dc Fixed linter error. 2023-09-06 11:43:55 +05:30
Akshay Joshi 07d965ea46 Ensure that Materialized view size fields in Statistics should be human-readable. #6712 2023-09-06 11:31:04 +05:30
Pravesh Sharma a43b70e360 1. Added USING method while creating the table. #6378
2. Added USING method while creating the materialized view. #6400
2023-09-06 11:22:30 +05:30
Khushboo Vashi 095e11247d Update release notes. 2023-09-05 18:18:36 +05:30
Akshay Joshi 88162c683e Unpin the 'python-socketio' as the issue is fixed in the latest version of Flask-SocketIO v5.3.6 2023-09-05 16:29:29 +05:30
Akshay Joshi cf3c696f7e Pin python-socketio to 5.8.0 as the latest version throwing error for the test client. 2023-09-05 11:54:43 +05:30
Everton Seiei Arakaki 02eaf787e9 Add support for additional ID token claim checks for OAuth 2 authentication. #6736 2023-09-05 11:28:18 +05:30
Dave Page e5c249e81c Remove version from SSL libs 2023-09-04 15:35:56 +01:00
Akshay Joshi c0b868b53b Added Strategy, Locale Provider, ICU Locale, ICU Rules, and OID options while creating a database. #6383 2023-09-04 16:03:06 +05:30
dependabot[bot] 39a14920e3 Python dependency: Bump axios from 1.4.0 to 1.5.0 in /runtime (#6725)
Bumps [axios](https://github.com/axios/axios) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 15:05:16 +05:30
sprayzcs 5cf9dea9a8 Change grep regex in the docker's entrypoint to find env variables starting with PGADMIN_CONFIG_ only. 2023-09-04 13:06:15 +05:30
Anil Sahoo 0b7eafaca0 Added the 'data type' column in the properties tab of the Columns collection node. #2411 2023-08-31 12:33:08 +05:30
Khushboo Vashi ed8aeed818 Remove backslash from the directory path to fix the SBOM generation issue on Windows. 2023-08-31 12:30:40 +05:30
Khushboo Vashi 0b91244f91 Another attempt to fix SBOM Windows issue. 2023-08-30 11:21:08 +05:30
Khushboo Vashi 46c67a2f4e Fix SBOM generation issue on Windows. 2023-08-28 15:42:39 +05:30
Akshay Joshi c87e925991 Update release note 2023-08-25 12:51:47 +05:30
Anil Sahoo 5fb80af90e Added all the new options of the 'WITH' clause in the subscription dialog. #4805 2023-08-25 12:48:31 +05:30
Akshay Joshi 77467209c2 1) Added release note for v7.7
2) Added exception handling while removing the test database file.
2023-08-25 11:14:54 +05:30
Yogesh Mahajan cd613ded0a Ensure user is redirected to login page after failed login. #6704 2023-08-25 10:38:50 +05:30
Aditya Toshniwal e8283173ba Remove imagemin-pngquant as we already have a PNG optimizer imagemin-optipng 2023-08-23 12:23:38 +05:30
Akshay Joshi c08953b9b3 Update version for release 7.6 2023-08-21 13:14:40 +05:30
Aditya Toshniwal 779749a515 Fix an 'str expected' error in import/export when setting server password in env 2023-08-21 13:08:19 +05:30
Yogesh Mahajan 7f5433b307 Update documentation for OAuth2 authentication redirect url.#6644 2023-08-21 12:16:18 +05:30
Libor M 93525a6196 Czech translation for version 7.6 2023-08-21 11:20:09 +05:30
Akshay Joshi eee7e1ae53 Update message catalogs. 2023-08-17 18:51:32 +05:30
Yogesh Mahajan e2f32c0984 Fix doc build failure due to SQLAlchemy changes. #6208 2023-08-17 14:00:56 +05:30
Akshay Joshi edd1783353 Fixed an issue where ignore owner is not working when owner and grants both are different 2023-08-16 18:46:42 +05:30
Aditya Toshniwal 1adde6084f Update release notes 2023-08-16 15:32:17 +05:30
Yogesh Mahajan 34f160cec7 Allow changing the POOL_SIZE and MAX_OVERFLOW config values of the pgAdmin config DB connection pool. #6208 2023-08-16 15:29:11 +05:30
Akshay Joshi 33b2b82ba9 Pin NW.js to 0.77.0, as the latest version crashes after an attempt to reopen the fullscreen window. 2023-08-16 13:05:35 +05:30
Akshay Joshi 2c81b33925 Sort parent objects as well in Schema Diff tool. 2023-08-14 17:14:58 +05:30
Khushboo Vashi a9799f25a2 Generate SBOM for Python wheel package. 2023-08-14 16:23:17 +05:30
Akshay Joshi 0e0eb3c2d5 Fixed the validation for source and target schema in schema diff tool. 2023-08-14 14:03:49 +05:30
MysticBoy 98fd51b38b Fixed Chinese translation error 2023-08-14 10:41:28 +05:30
Akshay Joshi 3c43aa12af 1) Added 'Ignore Grants' option in the schema diff tool. #5759
2) Added 'Ignore Tablespace' option in the schema diff tool. #6004
3) Ensure that Schema Diff comparison results should be displayed in the sorted order. #6595
4) Fixed an issue where the SET directive is excluded from the function header in the schema diff tool. #6651
2023-08-11 17:38:44 +05:30
Khushboo Vashi e80d55e968 Use a consistent name for sbom files. 2023-08-11 15:12:26 +05:30
Dave Page 7fcfea2214 JIT entitlement is required on Apple Silicon, otherwise NWJS won't start.
See https://github.com/nwjs/nw.js/issues/8086
2023-08-10 13:36:00 +01:00
Dave Page e06d39b70c Cleanup some more unnecessary artefacts from the build. 2023-08-10 13:35:04 +01:00
Khushboo Vashi b2eb23eb8d Fix pgAdmin 7.5 fails to render table SQL with extension loaded index method. #6630 2023-08-10 11:53:30 +05:30
Akshay Joshi da71c0c746 Fixed an issue where the 'CASCADE' keyword is always visible while creating an Extension. #3942 2023-08-09 18:17:08 +05:30
Yogesh Mahajan 0b24a8f39a Ensure keyboard shortcut for query execution is disabled when query execution is in progress. #6664 2023-08-09 10:49:45 +05:30
MysticBoy 8afa17d692 Chinese translation. 2023-08-08 11:56:32 +05:30
Khushboo Vashi c72e2f159d Fix the query tool issue 'pgAdminThread' object has no attribute 'native_id'. #6660 2023-08-08 11:00:52 +05:30
Khushboo Vashi f399b30605 Update release notes. 2023-08-07 17:23:32 +05:30
Khushboo Vashi b55164c454 Fix the query tool issue where raise Notice from func/proc or code blocks are no longer displayed live. #6420 2023-08-07 17:19:08 +05:30
Pravesh Sharma 27c7ea2ff1 Added all like options while creating a table. #6377 2023-08-07 11:20:04 +05:30
Khushboo Vashi ac50b4d80b Another attempt to fix rpm build failure for SBOM. 2023-08-04 15:37:13 +05:30
Khushboo Vashi 2c4b479f50 Fix the rpm build failure for SBOM. 2023-08-04 15:05:06 +05:30
Pravesh Sharma 00011b387a Fixed issue where cycle syntax was not added in SQL when creating new sequence from UI. #6639 2023-08-04 11:57:28 +05:30
Akshay Joshi b01a93544f Added cascade option while creating an extension. #3942 2023-08-03 17:23:03 +05:30
Khushboo Vashi 48bfc66048 Generate software bill of materials as part of the package builds. #3702 2023-08-03 16:08:59 +05:30
Akshay Joshi 1a7a23de3f Added WAL option to EXPLAIN ANALYZE command. #6382 2023-08-03 15:57:12 +05:30
Aditya Toshniwal 59c4a00134 Fix an issue where query tool on shared server is throwing error if the pgAdmin config DB is external. #6252 2023-08-03 12:08:52 +05:30
Aditya Toshniwal c873217cf1 Update release notes 2023-08-03 09:45:44 +05:30
Yogesh Mahajan ce146b679c Add support for TRUNCATE trigger in foreign table. #6448 2023-08-03 09:42:17 +05:30
Yogesh Mahajan e8fdf04e97 Fix incorrect redirection URL after authentication by removing fixed value set to SCRIPT_NAME environment variable in pgAdmin4.wsgi file.#5454 2023-08-03 09:18:43 +05:30
Akshay Joshi 0f86b78d87 Added support for PostgreSQL and EPAS 16 to ensure it works without any errors. #6588 2023-08-02 11:26:09 +05:30
Khushboo Vashi 31fddaf10b Update release notes. 2023-08-01 14:03:21 +05:30
Khushboo Vashi 30a0fb1cb3 Fix the issue where query tool window turns blank if the user tries to generate a graph on the result. #6500 2023-08-01 13:57:52 +05:30
Aditya Toshniwal 3ba73ab1d9 Update axios to the current latest version(1.4.0) 2023-08-01 13:04:06 +05:30
Anil Sahoo 7d7b8a71c1 1. Added Expression to CREATE INDEX. #2595
2. Added support for ALTER INDEX column statistics. #6375
2023-08-01 12:37:47 +05:30
dependabot[bot] 4920d25479 JS dependency: Bump html-react-parser from 1.4.14 to 4.2.0 in /web (#6610)
Bumps [html-react-parser](https://github.com/remarkablemark/html-react-parser) from 1.4.14 to 4.2.0.
- [Release notes](https://github.com/remarkablemark/html-react-parser/releases)
- [Changelog](https://github.com/remarkablemark/html-react-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/remarkablemark/html-react-parser/compare/v1.4.14...v4.2.0)

---
updated-dependencies:
- dependency-name: html-react-parser
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-01 12:34:54 +05:30
Aditya Toshniwal a1c7265c41 Fix PEP8 issues with latest pycodestyle (#6636) 2023-07-31 18:14:39 +05:30
Aditya Toshniwal 2aea5b41ad Fix an issue where changing MFA_SUPPORTED_METHODS breaks the MFA validation. #6624 2023-07-31 15:02:30 +05:30
Akshay Joshi 9ab36b0269 Fixed PEP8 2023-07-27 18:18:39 +05:30
Akshay Joshi b4e6d8c6d7 1) Fixed feature tests failed due to maintenance changes.
2) Update release note.
2023-07-27 18:15:36 +05:30
Pravesh Sharma 5c2d242ff8 Added unlogged option while creating a sequence. #6376 2023-07-27 17:37:22 +05:30
Akshay Joshi a460644ae8 1) Added support for SYSTEM, CONCURRENTLY and TABLESPACE options in REINDEX. #6381
2) Added new/missing options to the VACUUM command. #6397
3) Added SKIP_LOCKED and BUFFER_USAGE_LIMIT option to Analyze command. #6415
2023-07-27 17:34:25 +05:30
Akshay Joshi e177344ae1 Sign the pgAdmin4.exe file using signtool before creating the installer. 2023-07-25 17:19:46 +05:30
Dave Page 8651a1ed45 Don't silence progress messages when building the windows installer. 2023-07-24 15:45:21 +01:00
Akshay Joshi 8ec5fca4a0 Remove the 'Objects' tab from the backup dialog as the feature is not yet implemented 2023-07-24 17:30:54 +05:30
Akshay Joshi 52643a5c9b Update version for release v7.5 2023-07-24 12:59:21 +05:30
Khushboo Vashi a7f06eea0b Fix an issue where inserting more than 10 rows does not work correctly in View Data; only parts end up in the table. #6582 2023-07-24 12:49:42 +05:30
oon arfiandwi a5cb9b5679 Indonesian translation for version 7.5 2023-07-24 10:40:56 +05:30
Libor M 538c1aa622 Czech translation for version 7.5 2023-07-24 10:32:22 +05:30
Domenico Sgarbossa 5f86088cfe Italian translations update for v7.5 2023-07-21 12:32:39 +05:30
Akshay Joshi fc1cd179ee Update message catalogs 2023-07-20 18:36:18 +05:30
Aditya Toshniwal 69dec1bdf9 Set parallel to false for TerserPlugin to try and fix build failures 2023-07-20 17:21:47 +05:30
Yogesh Mahajan 39d70a94a6 Ensure user gets proper error if incorrect credentials are entered while authenticating AWS. #6406 2023-07-20 16:56:17 +05:30
Akshay Joshi dab5e592e2 Try to fix the TerserPlugin issue on build machines by setting --max-old-space-size to 3072 2023-07-20 16:53:40 +05:30
Akshay Joshi a3c3d91515 Fixed some issues in Backup and PSQL tool 2023-07-19 20:31:29 +05:30
Aditya Toshniwal 25e05de27d Attempt to fix failing git action JS test case due to checksum error 2023-07-19 18:22:45 +05:30
Aditya Toshniwal 9f35728c6a Pin dnspython==2.3.0 to fix test cases. 2023-07-19 17:59:34 +05:30
Yogesh Mahajan 76b0f80893 Pin correct gunicorn version to 20.1.0 as latest version gives error - Bad file descriptor. #3025 2023-07-19 12:55:28 +05:30
Yogesh Mahajan d17d291e07 Pin gunicorn version to 20.0.1 as latest version gives error - Bad file descriptor(Gunicorn Issue #3025). 2023-07-19 12:25:01 +05:30
Pravesh Sharma b4991a49a2 fixed issue where deduplicate_items was selected for PG version 12 and below. #6374 2023-07-17 11:19:55 +05:30
Nikhil Mohite d3753ee132 Fix an issue where the edit server fails in desktop mode if the server password is not stored. #6489 2023-07-17 11:19:20 +05:30
Akshay Joshi d98ce3864f Fixed API test case for PSQL 2023-07-14 11:18:58 +05:30
Dave Page 038ab5eb90 Correct bin path for EPAS. 2023-07-13 15:58:45 +01:00
Aditya Toshniwal 4676961fc4 Fix multiple Query Tool, ERD title related issues. 2023-07-13 20:06:24 +05:30
Dave Page de7eb73867 Fix a copy/paste error. 2023-07-13 14:57:02 +01:00
Akshay Joshi 58cd21686b Handle the intermittent failure for query tool test. 2023-07-13 19:03:16 +05:30
Dave Page be1bdbcd14 Run feature tests on Github.
Initial patch by me, with additional testing/debugging/fixing by Yogesh Mahajan.
2023-07-13 14:31:05 +01:00
Akshay Joshi 75d14565e4 Fixed escape/unescape issues in Query Tool and PSQL. 2023-07-13 17:02:51 +05:30
Akshay Joshi bd4e14da89 Added new/missing parameters to pg_restore. #6562 2023-07-13 13:01:48 +05:30
San Lin Naing 8dd8d1d03a Fixed an issue where ERD Tool can't load the saved pgerd file from Shared Storage. #6558 2023-07-13 11:06:46 +05:30
Khushboo Vashi 715fa47eb6 Fix an error 'list' object has no attribute 'strip' while attempting to populate auto-complete manually the first time. #6556 2023-07-13 10:18:38 +05:30
Akshay Joshi 45b1794941 1) Added extra check in qtLiteral method.
2) Fixed some escaping issues.
2023-07-12 15:26:19 +05:30
Akshay Joshi 940d190bc8 Fixed an issue where pgAdmin failed to setup role with hyphens in name. #6531 2023-07-12 10:36:41 +05:30
Pravesh Sharma ab0b1dd40c Added all supported index storage parameters while creating an index. #6374 2023-07-11 18:12:53 +05:30
Aditya Toshniwal ac5be70c60 Fix issues found while testing login pages. #6295 2023-07-11 18:12:06 +05:30
Akshay Joshi def1f31ba8 Ensure that Backup, Restore, and Maintenance should work properly when pgpass file is used. #6499 2023-07-11 15:34:27 +05:30
Khushboo Vashi 20ad30abc1 Return to the old version 1.26.* of urllib3 as botocore does not support the latest version. 2023-07-11 14:57:58 +05:30
dependabot[bot]andKhushboo Vashi fbf25f861b Python dependency: Update urllib3 requirement from ==1.26.* to ==2.0.* (#6200)
Updates the requirements on [urllib3](https://github.com/urllib3/urllib3) to permit the latest version.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.0...2.0.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Khushboo Vashi <khushboo.vashi@enterprisedb.com>
2023-07-11 11:55:36 +05:30
dependabot[bot]andKhushboo Vashi 2fb68bf7fc Python dependency: Update boto3 requirement in /web/regression (#6540)
Updates the requirements on [boto3](https://github.com/boto/boto3) to permit the latest version.
- [Release notes](https://github.com/boto/boto3/releases)
- [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst)
- [Commits](https://github.com/boto/boto3/compare/1.26.0...1.28.0)

---
updated-dependencies:
- dependency-name: boto3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Khushboo Vashi <khushboo.vashi@enterprisedb.com>
2023-07-11 11:35:17 +05:30
dependabot[bot] 21b81f7999 Python dependency: Bump psycopg[c] from 3.1.8 to 3.1.9 (#6240)
Bumps [psycopg[c]](https://github.com/psycopg/psycopg) from 3.1.8 to 3.1.9.
- [Release notes](https://github.com/psycopg/psycopg/releases)
- [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst)
- [Commits](https://github.com/psycopg/psycopg/compare/3.1.8...3.1.9)

---
updated-dependencies:
- dependency-name: psycopg[c]
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-11 11:28:16 +05:30
dependabot[bot] 8744b29edf Python dependency: Update cryptography requirement (#6404)
Updates the requirements on [cryptography](https://github.com/pyca/cryptography) to permit the latest version.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/40.0.0...41.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-11 11:27:02 +05:30
dependabot[bot] ecf29c5be9 Python dependency: Update botocore requirement in /web/regression (#6541)
Updates the requirements on [botocore](https://github.com/boto/botocore) to permit the latest version.
- [Changelog](https://github.com/boto/botocore/blob/develop/CHANGELOG.rst)
- [Commits](https://github.com/boto/botocore/compare/1.29.0...1.31.0)

---
updated-dependencies:
- dependency-name: botocore
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-11 11:21:40 +05:30
Akshay Joshi fbb43f8c3e Align two switch controls inline for Backup Server and Backup Object dialog. 2023-07-10 18:47:07 +05:30
Aditya Toshniwal 613002c417 Update release notes 2023-07-10 18:34:55 +05:30
San Lin Naing 16a0950f63 Fix an issue where adding a sub-folder inside a folder is not working as expected. #6544 2023-07-10 18:32:21 +05:30
Aditya Toshniwal a08714cd65 Allow two controls to be inline in SchemaView. 2023-07-10 17:42:20 +05:30
Akshay Joshi 7686280cb2 1) Added --exclude-database option for Backup Server.
2) Fixed Jasmine test cases.
2023-07-10 12:44:26 +05:30
Khushboo Vashi 115d4afd9e Fix security hotspots reported by Sonarqube. 2023-07-10 12:42:48 +05:30
Khushboo Vashi a6b8b7bfa9 Update release notes. 2023-07-10 11:27:16 +05:30
Yogesh Mahajan cb7fd7106c Enable cluster deployment with gp3 volume for AWS & BigAnimal cloud providers. #6323 2023-07-10 11:22:24 +05:30
Pravesh Sharma 62056cab14 Fixed sonaqube security smells and bugs
1. Delete unreachable code or refactor the code to make it reachable.
2. Unexpected var, use let or const instead.
3. Remove useless assignment to variable.
4. Define a constant instead of duplicating the literal
5. Remove commented out code
2023-07-10 10:36:15 +05:30
Akshay Joshi 9aa116bf3f 1) Added new/missing parameters to pg_dumpall (Backup Server). #6416
2) Added new/missing parameters to pg_dump (Backup Objects). #6417
2023-07-10 10:34:30 +05:30
Akshay Joshi 70d356d0f4 Fixed API test cases failing for v13 and below 2023-07-06 14:44:48 +05:30
Akshay Joshi bccdb131ee Fixed an issue where Partitions are not visible in EPAS Servers. 2023-07-06 12:58:06 +05:30
Dave Page dd92196c40 Un-break the doc build. 2023-07-05 14:37:21 +01:00
Akshay Joshi c12f229c64 Added check to enable/disable Concurrently and Finalize menu of Detach Partition. #6369 2023-07-05 18:36:59 +05:30
Dave Page 6b232ba7e8 Remove unsupported PostgreSQL versions from the container.
Fixes #6532
2023-07-05 13:26:12 +01:00
Khushboo Vashi d09c3b6b21 Update release notes. 2023-07-04 11:53:12 +05:30
Khushboo Vashi 326dc2bbcc Fix an issue where queries longer than 1 minute get stuck - Container 7.1. #6317 (#6491)
Fix an issue where queries longer than 1 minute get stuck - Container 7.1. #6317
Fix an issue where queries get stuck with auto-completion enabled. #6356
Fix an issue where queries can't complete execution. #6163
2023-07-04 10:44:46 +05:30
Dave Page cba689dcd9 Fix typo. 2023-07-03 13:29:38 +01:00
Dave Page 8f6d016df0 Clarify the LICENSE file to indicate the it is the PostgreSQL Licence.
Fixes #6423.
2023-07-03 10:24:03 +01:00
Akshay Joshi 8724fe5619 Update release note. 2023-06-30 16:10:21 +05:30
Aditya Toshniwal d6cddd8c29 Remove Bootstrap and jQuery from authentication pages and rewrite them in ReactJS. #6295 2023-06-30 16:08:33 +05:30
Nikhil Mohite 732bcc2b4d Fixed an issue where the query tool is unable to execute a query on Postgres 10 and below versions. #6515 2023-06-30 12:40:48 +05:30
Akshay Joshi 8600a41185 Update release note 2023-06-29 11:18:00 +05:30
Kevapo 944b614431 Fixed an issue where Import Export not working when using pgpassfile. #6165 2023-06-29 11:13:50 +05:30
Anil Sahoo cbeacf890d Fixed Query Tool/ PSQL tool tab title not getting updated on database rename. #6364 2023-06-29 10:34:20 +05:30
Akshay Joshi 0687c52fdc Added support to detach partitions using concurrently and finalize. #6369 2023-06-29 10:33:39 +05:30
Akshay Joshi dcca55a200 Update version for release v7.4 2023-06-26 17:09:47 +05:30
Aditya Toshniwal d655d0437d Fix failing JS test cases due to yarn.lock update 2023-06-26 14:59:24 +05:30
Aditya Toshniwal 8dc79e73bd Fix an XSS issue in PSQL tool title 2023-06-26 13:36:25 +05:30
Akshay Joshi 39359dd2f1 Update yarn.lock for yarn v3 2023-06-26 13:05:50 +05:30
oon arfiandwi 64c48ad237 Indonesian translation for version 7.4 2023-06-26 10:53:37 +05:30
MysticBoy ee0cfef31a Chinese translation for v7.4 2023-06-26 10:53:17 +05:30
Libor M 5a22876176 Czech translation for version 7.4 2023-06-26 10:52:47 +05:30
Akshay Joshi ca01116700 Typecast some parameters before sending to GUI in server module. 2023-06-23 19:15:21 +05:30
Akshay Joshi c93000a6e2 Update Dependencies. 2023-06-22 16:32:42 +05:30
Akshay Joshi 058da752a1 Update message catalogs. 2023-06-22 16:28:51 +05:30
Aditya Toshniwal 4b477aed5d Update release notes 2023-06-22 14:02:20 +05:30
Aditya Toshniwal f7bc826262 Fix an issue where all the menus are enabled when pgAdmin is opened and no object is selected in the object explorer. #6435 2023-06-22 13:52:39 +05:30
Akshay Joshi 5a701b7c61 Update release note 2023-06-22 11:16:03 +05:30
Anil Sahoo 78db1e3c36 Added security_invoker option while creating a view. #6371 2023-06-22 11:14:03 +05:30
Khushboo Vashi 1184752540 Support UNICODE encoding as psycopg3 do not support it by default. 2023-06-21 15:32:13 +05:30
Aditya Toshniwal 7c6e83c6fe Fix an issue where explain plan details is showing HTML escaped characters. #6352 2023-06-21 13:45:43 +05:30
Akshay Joshi 0d926d4c7f Update release note. 2023-06-21 11:27:11 +05:30
Pravesh Sharma 595a0dfc55 Added 'OR REPLACE' clause while creating trigger. #6370 2023-06-21 11:13:53 +05:30
Aditya Toshniwal 466e969776 Fix an issue where object explorer tree crashes occasionally. #5306 2023-06-21 11:05:58 +05:30
Akshay Joshi 878c14dec0 Attempt to fix windows build with npm rebuild command. 2023-06-20 17:33:22 +05:30
Akshay Joshi 4490f6f838 Ensure that if test cases run with the '--pkg resql' option then only RESQL test cases should be run. 2023-06-20 17:24:37 +05:30
Nikhil Mohite 4746fbd346 Fixed an issue where View/Edit data is throwing an error if the user deleted and re-create the same table for which View/Edit data was opened. #6431 2023-06-19 19:37:10 +05:30
Akshay Joshi 5d619fd455 1) Fixed Schema Diff issue.
2) Remove unsupported versions from the get_version_mapping_directories() function.
3) Updated test cases for version template loader.
2023-06-19 18:44:55 +05:30
Khushboo Vashi c5cbb33a06 Fix raise notice from func/proc or code blocks are no longer displayed live. #6420 2023-06-19 17:04:22 +05:30
Aditya Toshniwal a9ae7ca099 Ensure that query tool status poller is paused if the query tool is not visible/active 2023-06-19 16:28:48 +05:30
Aditya Toshniwal d21e1eb17e Update release notes 2023-06-19 15:35:37 +05:30
Aditya Toshniwal bb570a50ae Update release notes 2023-06-19 15:17:28 +05:30
Pravesh Sharma 36949aef99 Added option to create unique index with nulls not distinct. #6368 2023-06-19 15:09:48 +05:30
Akshay Joshi 557f33c4f9 Added support to drop databases using the 'WITH (FORCE)' option. #6367 2023-06-19 15:04:40 +05:30
Yogesh Mahajan eef295f9d8 Fixed feature tests failing due to selenium upgrade to 4.10.0. 2023-06-19 11:43:28 +05:30
Akshay Joshi b8377be1b5 Pin selenium=4.9.1 as latest version having some issues. 2023-06-15 17:58:08 +05:30
Anil Sahoo 789f169135 Add Password exec command and Expiration time to server export JSON and also allow them to import. #6258 2023-06-15 11:49:06 +05:30
Pravesh Sharma 64446790d2 Add a precautionary fix to handle connection timeout issue when fetching more rows in query tool grid. #6291 2023-06-14 16:53:47 +05:30
Nikhil Mohite be4db5ce04 Fixed an issue where PSQL tool not working if the database name have single and double quotes #6431 2023-06-13 12:04:26 +05:30
Akshay Joshi c90f831493 Fix new code smell 2023-06-12 19:06:01 +05:30
Akshay Joshi 251bf05692 Fixed the following SonarQube code smells:
1) Do not use Array index in keys.
2) Unnecessary escape character.
3) Rename this local variable to match the regular expression ^[_a-z][a-z0-9_]*$
4) Remove the unused local variable.
2023-06-12 18:44:31 +05:30
Pravesh Sharma 3e713cf58b Fixed an issue where preview images for themes were not loading in preferences. #6363 2023-06-12 14:59:43 +05:30
Aditya Toshniwal 78c098c9ea Add imagemin to packages as it is required now by image-minimizer-webpack-plugin 2023-06-10 16:37:12 +05:30
Dave Page 6bf2733628 Use the release build of NWJS for Apple Silicon 2023-06-09 14:58:35 +01:00
Aditya Toshniwal a1608900ed Use correct plugins for webpack image minimiser plugin 2023-06-09 18:56:03 +05:30
Aditya Toshniwal 745a91393c Fix JS test cases and other JS build issues caused due to dependabot updates. 2023-06-09 18:22:20 +05:30
Pravesh Sharma f4ea95da12 Fixed few query tool query tool shortcuts. #6065 2023-06-09 18:20:43 +05:30
dependabot[bot] 22f2ac0507 Python dependency: Bump coverage from 7.2.3 to 7.2.7 in /web/regression (#6413)
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.2.3 to 7.2.7.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.2.3...7.2.7)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 17:26:13 +05:30
dependabot[bot] 15ea450abe Python dependency: Bump @babel/preset-typescript in /web (#6419)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.21.4 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-preset-typescript)

---
updated-dependencies:
- dependency-name: "@babel/preset-typescript"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 17:25:50 +05:30
dependabot[bot] 923168833c Python dependency: Bump azure-mgmt-resource in /web/regression (#6411)
Bumps [azure-mgmt-resource](https://github.com/Azure/azure-sdk-for-python) from 23.0.0 to 23.0.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-mgmt-resource_23.0.0...azure-mgmt-resource_23.0.1)

---
updated-dependencies:
- dependency-name: azure-mgmt-resource
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 17:25:25 +05:30
dependabot[bot] e385aec7f7 Python dependency: Bump fixtures from 4.0.1 to 4.1.0 in /web/regression (#6410)
Bumps [fixtures](https://github.com/testing-cabal/fixtures) from 4.0.1 to 4.1.0.
- [Changelog](https://github.com/testing-cabal/fixtures/blob/master/NEWS)
- [Commits](https://github.com/testing-cabal/fixtures/compare/4.0.1...4.1.0)

---
updated-dependencies:
- dependency-name: fixtures
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 17:24:43 +05:30
dependabot[bot] c42e00a090 Python dependency: Bump selenium from 4.9.1 to 4.10.0 in /web/regression (#6409)
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.9.1 to 4.10.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.9.1...selenium-4.10.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 17:23:39 +05:30
dependabot[bot] e20e862c22 Python dependency: Bump image-minimizer-webpack-plugin in /web (#6408)
Bumps [image-minimizer-webpack-plugin](https://github.com/webpack-contrib/image-minimizer-webpack-plugin) from 2.2.0 to 3.8.2.
- [Release notes](https://github.com/webpack-contrib/image-minimizer-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/image-minimizer-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/image-minimizer-webpack-plugin/compare/v2.2.0...v3.8.2)

---
updated-dependencies:
- dependency-name: image-minimizer-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 17:23:13 +05:30
Khushboo Vashi a5b5ede8fd Fix the UNICODE encoding issue while connecting through Pgbouncer after upgrading from 6.21 to 7.1 #6340. 2023-06-09 16:24:05 +05:30
Khushboo Vashi 07fa09f3c7 Ignore Python 3.8 minor versions while fixing eventlet issues for Python 3.9. 2023-06-09 16:05:01 +05:30
Akshay Joshi 7e3a932890 Fixed SonarQube Bugs 2023-06-09 15:28:46 +05:30
Nikhil Mohite 3b9eef3bb7 Updated master password documentation. 2023-06-08 18:47:50 +05:30
Aditya Toshniwal 90630e386b Remove requests module from requirements and allow it be installed as a dependency instead 2023-06-08 12:29:58 +05:30
dependabot[bot] c1a7984e1f Python dependency: Bump eslint from 8.41.0 to 8.42.0 in /runtime (#6362)
Bumps [eslint](https://github.com/eslint/eslint) from 8.41.0 to 8.42.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.41.0...v8.42.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 12:19:20 +05:30
dependabot[bot] aa7720f226 Python dependency: Bump @emotion/styled from 10.3.0 to 11.11.0 in /web (#6256)
Bumps [@emotion/styled](https://github.com/emotion-js/emotion) from 10.3.0 to 11.11.0.
- [Release notes](https://github.com/emotion-js/emotion/releases)
- [Changelog](https://github.com/emotion-js/emotion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/emotion-js/emotion/compare/@emotion/styled@10.3.0...@emotion/styled@11.11.0)

---
updated-dependencies:
- dependency-name: "@emotion/styled"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 10:44:48 +05:30
dependabot[bot] 8e58bcc4c0 Python dependency: Bump azure-identity from 1.12.0 to 1.13.0 (#6347)
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.12.0...azure-identity_1.13.0)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 10:42:12 +05:30
dependabot[bot] caad254fca Python dependency: Bump chartjs-plugin-zoom from 1.2.1 to 2.0.1 in /web (#6348)
Bumps [chartjs-plugin-zoom](https://github.com/chartjs/chartjs-plugin-zoom) from 1.2.1 to 2.0.1.
- [Release notes](https://github.com/chartjs/chartjs-plugin-zoom/releases)
- [Commits](https://github.com/chartjs/chartjs-plugin-zoom/compare/v1.2.1...v2.0.1)

---
updated-dependencies:
- dependency-name: chartjs-plugin-zoom
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 10:41:46 +05:30
dependabot[bot] c649fcca94 Python dependency: Bump nw from 0.76.0 to 0.77.0 in /runtime (#6365)
Bumps [nw](https://github.com/nwjs/npm-installer) from 0.76.0 to 0.77.0.
- [Commits](https://github.com/nwjs/npm-installer/commits)

---
updated-dependencies:
- dependency-name: nw
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 10:37:31 +05:30
dependabot[bot] f04fecb6c7 Python dependency: Bump @typescript-eslint/eslint-plugin in /web (#6366)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.1 to 5.59.9.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.9/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 10:36:41 +05:30
Akshay Joshi c69315bb43 Fixed SSH Tunnel save password issue. 2023-06-05 15:13:15 +05:30
Akshay Joshi 4bddb5c36c 1) Update version for release 7.3
2) Update release note.
2023-06-05 13:07:32 +05:30
LingBing 9a793a30b3 Chinese Translation for version 7.3 2023-06-05 12:47:36 +05:30
Nikhil Mohite f6275688e7 Fixed following issues: (#6361)
1) Ensure that SSH Tunnel should work properly after upgrading to 7.2 from 7.1. #6341
2) Ensure that the master password dialog should not visible if the parameter MASTER_PASSWORD_REQUIRED is set to False. #6353
2023-06-05 12:45:34 +05:30
Khushboo Vashi 10077f13c4 Fixed an issue where pgadmin is unable to take the defined role. #6342 2023-06-05 12:37:33 +05:30
oon arfiandwi 1afcc5c835 Indonesian translation for version 7.2 2023-06-05 12:31:26 +05:30
Akshay Joshi 149e093c88 Fixed an issue where Foreign Key with 3 or more columns are shown in the wrong order in SQL and Properties. #6345 2023-06-02 15:01:54 +05:30
Akshay Joshi 99d1c99963 Update release note 2023-06-02 12:57:45 +05:30
Anil Sahoo b5af4ead0d Fix an issue where editing a database object de-selects it on the browser tree. #6136 2023-06-02 10:59:47 +05:30
dependabot[bot] 9b85e0a4cd Python dependency: Bump @material-ui/core from 4.11.0 to 4.12.4 in /web (#6182)
Bumps [@material-ui/core](https://github.com/mui-org/material-ui/tree/HEAD/packages/material-ui) from 4.11.0 to 4.12.4.
- [Release notes](https://github.com/mui-org/material-ui/releases)
- [Changelog](https://github.com/mui/material-ui/blob/v4.12.4/CHANGELOG.md)
- [Commits](https://github.com/mui-org/material-ui/commits/v4.12.4/packages/material-ui)

---
updated-dependencies:
- dependency-name: "@material-ui/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-02 10:55:14 +05:30
dependabot[bot] 0be4fb937f Python dependency: Bump axios from 1.3.5 to 1.4.0 in /runtime (#6214)
Bumps [axios](https://github.com/axios/axios) from 1.3.5 to 1.4.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.5...v1.4.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-02 10:54:02 +05:30
dependabot[bot] 05eb956aab Python dependency: Bump selenium from 4.8.3 to 4.9.1 in /web/regression (#6265)
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.8.3 to 4.9.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.9.1)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-02 10:53:00 +05:30
dependabot[bot] 36cb8e8428 Python dependency: Bump mini-css-extract-plugin in /web (#6299)
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 1.6.2 to 2.7.6.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v1.6.2...v2.7.6)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-02 10:52:27 +05:30
dependabot[bot] 28b1f68750 Python dependency: Bump eslint from 8.38.0 to 8.41.0 in /runtime (#6309)
Bumps [eslint](https://github.com/eslint/eslint) from 8.38.0 to 8.41.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.38.0...v8.41.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-02 10:51:52 +05:30
dependabot[bot] 0b58bfe6bf Python dependency: Update requests requirement from ==2.28.* to ==2.31.* (#6314)
Updates the requirements on [requests](https://github.com/psf/requests) to permit the latest version.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.28.0...v2.31.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-02 10:51:37 +05:30
Anil Sahoo 7dfcc73e95 Update the publication dialog tabs and the docs. #5868 2023-05-30 16:45:13 +05:30
Nikhil Mohite cbb89b09b1 Ensure migrate stored password dialogue is shown only if any server passwords are saved. #5123 2023-05-30 16:44:25 +05:30
Akshay Joshi 7d0ba9448b Update version for release 7.2 2023-05-29 19:13:05 +05:30
Anil Sahoo 05b595d32d Fixed the failure of python test cases of EPAS and JS tests for publication node. #5868 2023-05-29 17:41:45 +05:30
Aditya Toshniwal 396a22b6be Fix count SQL for EPAS schemas to show/hide nodes. #5048 2023-05-29 17:09:27 +05:30
Aditya Toshniwal 7be7d3a024 Update release notes 2023-05-29 11:03:39 +05:30
asdf-qwert 8ba7cea2f1 Separate multiple Blocking PIDs with delimiter on Dashboard. #6331 2023-05-29 11:02:29 +05:30
Libor M e3aa616edd Czech translation for version 7.2 2023-05-29 10:13:51 +05:30
Aditya Toshniwal dc8832192d When opening pgAdmin the layout should be auto reset if it is corrupted. Reset layout menu should work if layout is corrupted while using pgAdmin. #6266 2023-05-26 18:30:28 +05:30
Aditya Toshniwal 72794f9524 Fix issues related to show/hide empty nodes feature. #5048 2023-05-26 18:07:51 +05:30
Dave Page b337b64eb1 Make sure the quarantine bit isn't set. 2023-05-26 13:31:22 +01:00
Nikhil Mohite 67ef438730 Ensure migrate master password dialog is not shown with a fresh installation. #5123 2023-05-26 16:05:52 +05:30
Akshay Joshi 29053098fc Update Dependencies. 2023-05-26 10:52:47 +05:30
Akshay Joshi b9a3178b43 Update message catalogs. 2023-05-26 10:38:17 +05:30
Dave Page 7d068130a4 Build for Apple Silicon using the test SDK build from NWjs. 2023-05-25 15:42:42 +01:00
Yogesh Mahajan cb070fc365 Fix error handling to show error when a user enters incorrect Master Password. #4769 2023-05-25 18:51:40 +05:30
Aditya Toshniwal 396f6c9d73 Update release notes 2023-05-25 16:26:39 +05:30
Anil Sahoo 8b7eeca545 Implement new PostgreSQL 15 features in publication dialog and SQL. #5868 2023-05-25 16:25:12 +05:30
Yogesh Mahajan 702bc8c8ce Allow pgAdmin to retrieve master password from external script/program. #4769 2023-05-25 13:49:08 +05:30
Akshay Joshi cba3dc9457 Fixed an issue where Operators collection node throwing an error. #6325 2023-05-25 11:56:45 +05:30
Dave Page 4baaff4566 Fix typo. 2023-05-24 16:15:15 +01:00
Dave Page bdcf1f986f Manually install pip as well, to minimise work done by the framework creation script. 2023-05-24 16:14:43 +01:00
Dave Page 7609038a16 Install packages into the vent separately to avoid psycopg build issues. 2023-05-24 15:47:48 +01:00
Dave Page 619680e71f Don't unnecessarily set the PATH to include a hard coded directory. 2023-05-24 15:15:19 +01:00
Nikhil Mohite fec63c6cf3 Text improvement for the OS secret store feature. #5123 2023-05-24 18:06:21 +05:30
Dave Page 3e031ad334 Include the architecture name in the macOS DMG, in preparation for native M1 support. 2023-05-24 11:44:44 +01:00
Aditya Toshniwal 75cbf9165e Text changes for Show/Hide nodes feature. #5048 2023-05-24 11:26:02 +05:30
Yogesh Mahajan b6924a84d6 Fixed error occurring while opening query tool after togging Resume/Pause wal replay. #6026 2023-05-23 15:30:44 +05:30
Aditya Toshniwal 96f3ac8a53 Code improvements to handle API errors gracefully in tree code. #6308 2023-05-23 14:37:16 +05:30
Akshay Joshi dd4639d602 Fixed an issue where Foreign Key columns are shown in the wrong order in SQL and Properties. #5789 2023-05-23 11:52:19 +05:30
Pravesh Sharma bfa859e9ce Fixed an issue where PSQL tool prompts for password if using password exec command. #6247 2023-05-23 11:07:04 +05:30
Aditya Toshniwal b1eba4fc4c Fix incorrect number of foreign tables displayed. Show column comments in RE-SQL. #6279 2023-05-22 17:33:33 +05:30
Pravesh Sharma 4b183f7988 Fixed resql test case. #5926 2023-05-22 16:35:06 +05:30
Aditya Toshniwal fb3b2a4635 Fix an issue where View RE-SQL is not quoting the column comments. #6280 2023-05-22 16:24:55 +05:30
Akshay Joshi db3d0c6e21 Make the 'Connect to server' dialog a modal dialog. #6043 2023-05-22 15:00:42 +05:30
Aditya Toshniwal cedfd12f6a Add an option to hide/show empty object collection nodes. #5048 2023-05-22 14:55:01 +05:30
Aditya Toshniwal c9013a39b8 Update release notes 2023-05-22 14:11:11 +05:30
Pravesh Sharma e04f5a0938 Fixed an issue where REVOKE ALL DDL in table SQL was added only for one role. #5926 2023-05-22 14:09:47 +05:30
Nikhil Mohite 48dd32f0e4 Ensure that master password is validated before migrating the passwords to OS secret storage and stopped. #5123 2023-05-22 14:06:50 +05:30
Akshay Joshi 87c1023c4f Use dependent instead of dependant in the message. #6278 2023-05-22 11:38:19 +05:30
Aditya Toshniwal 7ab096d87f Update release notes 2023-05-22 11:10:53 +05:30
Nikhil Mohite 736879567f Added support to use standard OS secret store to save server/ssh tunnel passwords instead of master password in pgAdmin desktop mode. #5123 2023-05-22 11:08:29 +05:30
Akshay Joshi e2b27da2ef Fixed an issue where properties not visible for FTS Parsers, FTS Templates, MViews and Rules in Catalog objects. #6127 2023-05-18 16:21:15 +05:30
Akshay Joshi 4baae7512b Ensure that name can't be empty in edit mode for Primary Key and Index. #6204 2023-05-18 15:46:56 +05:30
Akshay Joshi 6949b41fb9 Ensure that a new row should be added on top in the User Management dialog. Fixes #5817 2023-05-18 13:26:47 +05:30
Aditya Toshniwal 4fd1e16bb4 Update release notes 2023-05-17 12:13:29 +05:30
Khushboo Vashi c0c9034326 Fix an issue where varchar column sizes are not visible in query tool data grid. #6281 2023-05-17 12:10:43 +05:30
Yogesh Mahajan 6c7f5d1a6b Ensure that connection heartbeat signals are stopped on server disconnect. #6147 2023-05-17 12:07:49 +05:30
Aditya Toshniwal c9920063dd Use python3.11 instead of python3 as setcap does not work on symlinks 2023-05-17 12:00:01 +05:30
Aditya Toshniwal 40b916dc2e Use python3 instead of python3.10 in Dockerfile to fix docker builds 2023-05-17 11:36:09 +05:30
Aditya Toshniwal 16e8df8f78 Cleanup Make.bat to use latest NW.js. #6080 2023-05-16 11:40:00 +05:30
Aditya Toshniwal b9f9ad8027 Update release notes 2023-05-16 11:32:46 +05:30
Yogesh Mahajan 30107e38f3 Ensure that "pause replay of wal"/"resume replay of wal" are enabled/disabled appropriately. #6026 2023-05-16 11:28:48 +05:30
Dave Page 8ea3346a9d Handle SQL_ASCII databases when running test cases.
* Handle cases when psycopg returns bytes instead of a string.

See https://github.com/psycopg/psycopg/issues/561

* A more appropriate fix, suggested by Daniele Varrazzo

* Fix typo.

* Re-think this check. Our own driver effectively monkey-patches the psycopg encoding mappings.
2023-05-16 09:20:01 +05:30
Pravesh Sharma c067289012 Fixed an issue where win 10 was not showing pgAdmin icon on taskbar for NW.js v0.73 and above. #6080 2023-05-15 21:43:32 +05:30
Yogesh Mahajan cad4c6b8af Fix feature tests for the database versions 11, 12 and 13, broken due to multirange data types support. 2023-05-15 11:42:17 +05:30
Pravesh Sharma 2ec460bf8f Fix the browser tree state that is not remembered when reopening pgAdmin. #5777 2023-05-11 14:32:00 +05:30
Khushboo Vashi acf5eb7a26 Update release notes. 2023-05-10 15:03:32 +05:30
Yogesh Mahajan 0431cf7fc1 Ensure the user is able to log in if the specified OAUTH2_USERNAME_CLAIM is present in the OAuth2 profile. #6267 2023-05-10 14:39:35 +05:30
Khushboo Vashi 259a534a71 Update release notes. 2023-05-10 10:37:35 +05:30
Khushboo Vashi 2a22cf077c Fix circular reference error for the multirange data types in the query tool. #6221
Add support for the multirange data types.
2023-05-10 10:32:47 +05:30
Khushboo Vashi 1f2f405057 Indicate the user if all the server's children nodes are hidden from the preferences setting. #6003 2023-05-09 15:14:14 +05:30
Akshay Joshi 5483f70d4b Update release note 2023-05-08 11:44:41 +05:30
Khushboo Vashi af1c70f192 Fix an issue in the register server when setting the role, an arbitrary SQL query can be fired. #6253 2023-05-08 11:40:53 +05:30
Aditya Toshniwal d8e00e6586 Fix a doc build issue occuring after adding release note for 7.2 2023-05-05 14:11:09 +05:30
Aditya Toshniwal eb1c36bf5b Add extension .md to regression/README 2023-05-05 14:03:31 +05:30
Aditya Toshniwal 377bf554b6 Update release notes 2023-05-05 13:59:41 +05:30
Chris Wiegand 1d27cb9251 Add a new checkbox to allow filtering active sessions on Dashboard. #3831 2023-05-05 13:55:20 +05:30
Aditya Toshniwal 5c57fd0170 Update release notes 2023-05-03 15:21:01 +05:30
Yogesh Mahajan d6f01b552a Ensure user/roles with special characters are quoted to avoid syntax error.#6234 2023-05-03 15:19:08 +05:30
Aditya Toshniwal 4fbfcdfee9 Fix multiple object breadcrumbs bugs. #2078 2023-05-03 15:18:17 +05:30
Akshay Joshi cba42ef277 Allow user to set the minimum value to 1 from preferences for ON_DEMAND_ROW_COUNT 2023-05-03 12:37:37 +05:30
Khushboo Vashi 4fc49390ed Pin psycopg3 to 3.1.8 2023-05-03 12:25:04 +05:30
Aditya Toshniwal a73f58160f Fix an issue where running any query in query tool gives 'list index out of range' error. #5922 2023-05-03 11:05:00 +05:30
Akshay Joshi 14f617681f Update release note 2023-05-03 10:35:54 +05:30
Aditya Toshniwal 52829d6f31 Fix an issue in View SQL when column level privileges are set with multiple roles. #6189 2023-05-03 10:34:39 +05:30
Aditya Toshniwal b2864add54 Disable devtools completely using chromiunm args. #6183 2023-05-02 11:13:17 +05:30
Akshay Joshi 1219dcb1d8 Reducing the value of 'max-old-space-size' to 2048 2023-05-02 11:10:35 +05:30
Akshay Joshi 39401469fd Reducing the value of 'max-old-space-size' to fix build failure. 2023-05-02 10:36:25 +05:30
Akshay Joshi 8a6a6624ae 1) Update version for release 7.1
2) Update Dependencies.
2023-05-01 12:04:28 +05:30
Akshay Joshi 7aec8bd9d7 Fixed translation issues. 2023-05-01 11:54:40 +05:30
oon arfiandwi a5a2a7c52f Indonesian translation for version 7.1 2023-05-01 10:41:49 +05:30
Libor M 2836285ba2 Czech translation for version 7.1 2023-04-29 13:55:38 +05:30
Nikhil Mohite b9686fcb00 Fixed an issue where import/export data is not working if service file is used to connect server. 2023-04-29 13:54:42 +05:30
Aditya Toshniwal edb74a0839 Disable NW.js dev tools shortcut on Mac as it may crash the app. #6183 2023-04-28 19:01:03 +05:30
Akshay Joshi 1ccdbf27e2 Pin Sphinx version to 6.1.3 due to locale error. 2023-04-28 17:57:10 +05:30
Domenico Sgarbossa 5fbf0b9fe5 Italian translation update for v7.1 2023-04-28 15:17:00 +05:30
Yogesh Mahajan 8428df97ca Fixed the error occurring while postgresql cloud instance deployment on AWS RDS. 2023-04-28 15:16:22 +05:30
Akshay Joshi 978979c39f Update message catalog and Dependencies 2023-04-27 21:35:25 +05:30
Akshay Joshi 0e0d0c7c2e Fixed API test cases for Triggers in EPAS. 2023-04-27 17:46:58 +05:30
Khushboo Vashi f4b910bffc Pin Werkzeug to 2.2.3 2023-04-27 15:28:18 +05:30
Aditya Toshniwal e20e75aeba Fixed an issue where Reset Password is not working after upgrading to latest flask-security-too. #6191 2023-04-27 13:19:09 +05:30
Aditya Toshniwal 46a9d4a69d Fix an issue where query tool hangs for some time when multiple columns are selected to open geometry viewer. #5044 2023-04-27 11:58:50 +05:30
Nikhil Mohite 35cbe968f4 Fixed an issue where table node is not getting added on UI if the same name table is present in another schema. 2023-04-27 11:57:55 +05:30
Aditya Toshniwal 23eaa47fea Update release notes 2023-04-26 15:43:37 +05:30
Pravesh Sharma 861c66d180 Ensure that when pasting a row in query tool grid, default value is used for autogenerated/serial columns. #5922 2023-04-26 15:41:10 +05:30
Aditya Toshniwal 1d7d6561f6 Add .yarnrc.yml file with node linker as node_modules to make docker builds work 2023-04-26 11:51:23 +05:30
Akshay Joshi 6d1e918c78 Update release note 2023-04-26 11:20:49 +05:30
Aditya Toshniwal 1e7517dc98 Show object breadcrumbs path along with its comment on object hover. #2078 2023-04-26 11:18:16 +05:30
Nikhil Mohite 60265b306f Fixed an issue where PSQL is not working if the PGUSER env variable is set and service file is used for server connection details. #6180 2023-04-26 11:14:10 +05:30
Aditya Toshniwal f12d6336cf Pin yarn-audit-html to 4.0.0 as latest version required node>=18 2023-04-25 14:08:46 +05:30
Aditya Toshniwal 05938fa6e1 Update yarn.lock to support latest version of yarn 2023-04-25 12:27:55 +05:30
Aditya Toshniwal cc9297327b Upgrade yarn when running JS test Github action 2023-04-25 10:32:33 +05:30
Aditya Toshniwal 3ac789f615 Fix ERD JS test cases failing due to previous commit. 2023-04-24 18:49:04 +05:30
Aditya Toshniwal 4c2ae44e4c Attempt to fix failing JS test cases with error related to ERD. 2023-04-24 18:04:02 +05:30
Akshay Joshi 32fb3f3c1f Update release note. 2023-04-24 14:57:47 +05:30
Nikhil Mohite 625508e32a Fixed an issue with the properties tab not getting updated if the user updates the selected node. #6158 2023-04-24 14:54:52 +05:30
Yogesh Mahajan 39a0f46159 Ensure that internal users are able to login when auth sources are [ldap, internal]. #6151 2023-04-24 11:54:02 +05:30
Dave Page 62baa0dccb Remove redundant backslash 2023-04-21 13:59:31 +01:00
Dave Page 1f17051bec Ryn Python tests against EPAS on Windows (#6168) 2023-04-21 13:56:24 +01:00
Dave Page ad9a67d6d1 Run Python tests on Windows. 2023-04-20 13:34:00 +01:00
Akshay Joshi 0ccfa7900c The search object, query tool, and psql tool menu should not be displayed for pgAgent. #6077 2023-04-20 18:01:20 +05:30
Khushboo Vashi d98f411ea9 Show proper message if the debugger is stopped by the user. #6059 2023-04-20 17:05:05 +05:30
Akshay Joshi c19fc3628c Ensure that the ERD tool should work with the external database after moving to psycopg3. #6159 2023-04-20 15:37:43 +05:30
Aditya Toshniwal 20132f8daa Fix a typo in database delete test case. 2023-04-20 14:39:41 +05:30
Aditya Toshniwal 7e2add8db1 Python test famework should log only relevant exception and exit with a non-zero code on error. #6157 2023-04-20 13:33:17 +05:30
Akshay Joshi d6ecc531e0 Added support to create an unnamed index. #3318 2023-04-20 12:35:10 +05:30
Aditya Toshniwal ed941b5b95 Fix a SQL error occurring on roles dependents SQL. #6128 2023-04-20 10:18:00 +05:30
Khushboo Vashi 41e4f3eed9 Log the exception to better understand the GSSAPI module load failure. 2023-04-19 17:20:34 +05:30
Khushboo Vashi bd3eeb7111 Skip Kerberos login mock test if GSSAPI module failed to load. 2023-04-19 16:20:07 +05:30
Yogesh Mahajan f1e7782ca2 Fixed error occurring while dumping the servers from CLI. #6137 2023-04-19 16:05:35 +05:30
Yogesh Mahajan 4ede084b8f Fixed error occurring while logging out from pgAdmin keeping a query tool opened. #6120 2023-04-18 17:54:21 +05:30
Nikhil Mohite a6faa77e5b Throw an appropriate error when a table for which View/Edit data is open is deleted and query is executed. #6138 2023-04-18 15:26:40 +05:30
dependabot[bot] e2c5d9a916 Python dependency: Bump eslint from 8.37.0 to 8.38.0 in /runtime (#6114)
Bumps [eslint](https://github.com/eslint/eslint) from 8.37.0 to 8.38.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.37.0...v8.38.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:45:40 +05:30
dependabot[bot] 26f79bafc6 Python dependency: Bump exports-loader from 2.0.0 to 4.0.0 in /web (#6071)
Bumps [exports-loader](https://github.com/webpack-contrib/exports-loader) from 2.0.0 to 4.0.0.
- [Release notes](https://github.com/webpack-contrib/exports-loader/releases)
- [Changelog](https://github.com/webpack-contrib/exports-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/exports-loader/compare/v2.0.0...v4.0.0)

---
updated-dependencies:
- dependency-name: exports-loader
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:45:26 +05:30
Khushboo Vashi 47a0009d32 Ensure to quote the primary key value if needed while deleting rows from the table. #6130 2023-04-17 12:38:16 +05:30
dependabot[bot] e33468e661 Python dependency: Bump react-resize-detector in /web (#6117)
Bumps [react-resize-detector](https://github.com/maslianok/react-resize-detector) from 8.0.3 to 9.1.0.
- [Release notes](https://github.com/maslianok/react-resize-detector/releases)
- [Commits](https://github.com/maslianok/react-resize-detector/compare/v8.0.3...v9.1.0)

---
updated-dependencies:
- dependency-name: react-resize-detector
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:25:08 +05:30
dependabot[bot] e24bd7c0e8 Python dependency: Bump axios from 1.3.4 to 1.3.5 in /runtime (#6097)
Bumps [axios](https://github.com/axios/axios) from 1.3.4 to 1.3.5.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.3.4...v1.3.5)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:23:59 +05:30
dependabot[bot] 569bf4d5a2 Python dependency: Bump coverage from 7.2.2 to 7.2.3 in /web/regression (#6103)
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.2.2 to 7.2.3.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.2.2...7.2.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:23:36 +05:30
dependabot[bot] f65d856d13 Python dependency: Bump copy-webpack-plugin from 7.0.0 to 11.0.0 in /web (#6070)
Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 7.0.0 to 11.0.0.
- [Release notes](https://github.com/webpack-contrib/copy-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/copy-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/copy-webpack-plugin/compare/v7.0.0...v11.0.0)

---
updated-dependencies:
- dependency-name: copy-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:22:05 +05:30
dependabot[bot] 1daf4b08e5 Python dependency: Bump eslint-plugin-react in /web (#6069)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.32.1 to 7.32.2.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.32.1...v7.32.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:20:56 +05:30
dependabot[bot] 80df33c179 Python dependency: Update pytz requirement in /web/regression (#6049)
Updates the requirements on [pytz](https://github.com/stub42/pytz) to permit the latest version.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2022.1...release_2023.3)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:20:29 +05:30
dependabot[bot] 1fd9353d4d Python dependency: Update pytz requirement from ==2022.* to ==2023.* (#6045)
Updates the requirements on [pytz](https://github.com/stub42/pytz) to permit the latest version.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2022.1...release_2023.3)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 12:20:13 +05:30
dependabot[bot] 62921600bd Python dependency: Update flask-babel requirement in /web/regression (#6115)
Updates the requirements on [flask-babel](https://github.com/python-babel/flask-babel) to permit the latest version.
- [Release notes](https://github.com/python-babel/flask-babel/releases)
- [Changelog](https://github.com/python-babel/flask-babel/blob/master/CHANGELOG)
- [Commits](https://github.com/python-babel/flask-babel/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: flask-babel
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 11:59:11 +05:30
Yogesh Mahajan 686f52f636 Do not treat database deletion errors as Feature test failures. 2023-04-17 11:47:08 +05:30
Akshay Joshi 947630e0f0 Added support to show statistics for materialized views. #3316 2023-04-14 16:27:43 +05:30
Yogesh Mahajan 64d5457e2b Try to fix feature test failures happening due to error occurring while deleting test databases.
* Try to fix feature test failures happening due to error occurring while deleting test databases.

* Updated ON_DEMAND_ROW_COUNT to ON_DEMAND_RECORD_COUNT missed in #3275.
2023-04-13 17:25:12 +05:30
Aditya Toshniwal ec19fc2b01 Update release notes 2023-04-13 16:51:54 +05:30
Yogesh Mahajan 993e1eb1b6 Allow on demand record count setting to be changed per user using preferences. #3275 2023-04-13 16:43:11 +05:30
Akshay Joshi 1131e0f742 Added PYTHON_OS_VERSION 11 for OSX build to get python 3.11 2023-04-13 16:20:42 +05:30
Akshay Joshi d92a836647 Update python version for OSX and update the release note. 2023-04-13 15:51:49 +05:30
Pravesh Sharma 288ba1d1f9 Fixed an issue where collation was set to none if we remove it while creating partitioned table. #5820 2023-04-13 13:27:16 +05:30
marupanda 9587d2bb3b Add print function in selenoid for firefox. 2023-04-13 13:25:44 +05:30
Pravesh Sharma c2a54f3524 Fixed an issue where browser tree state is not remembered when reopening pgAdmin. #5777 2023-04-13 13:02:46 +05:30
Pravesh Sharma 097080ba97 Ensure that save button is enabled when registering new server fails due to API error. #6075
Incorporated review comments
2023-04-13 13:02:12 +05:30
Khushboo Vashi 6ab102fcbc Fixed CSV export from Query Tool results does not include all columns for multiple CTEs. #6122 2023-04-11 19:09:26 +05:30
Akshay Joshi 290e160e13 Added backslash to quote $ variable substitution in preinst script. 2023-04-11 10:42:19 +05:30
Akshay Joshi af13d6da16 One more attempt to fix preinst script for RPM and Debian 2023-04-10 19:36:29 +05:30
Akshay Joshi 6b31fc4552 Change the logic to prevent the config_local.py from deletion on RPM and Debian. 2023-04-10 16:56:55 +05:30
Khushboo Vashi 660a75a582 Fixed asyncio random task error messages in Query tool. #6109 2023-04-10 16:45:05 +05:30
Aditya Toshniwal 15914fe5e3 Fix the dependents SQL of Roles which is throwing a type casting error on PostgreSQL 15. #6093 2023-04-10 12:25:12 +05:30
Akshay Joshi 96450fee63 Prevent deletion of 'config_local.py' for RPM and Debian 2023-04-06 19:15:01 +05:30
Dave Page b79b2b1265 Run Python tests with PostgreSQL on macOS as well as Linux 2023-04-06 13:05:50 +01:00
Aditya Toshniwal a93c0c8d94 Redirect pgAdmin main window console logs to NW.js server logs. 2023-04-06 15:16:14 +05:30
Dave Page 644575415e Concurrency control for Python tests. 2023-04-05 16:11:19 +01:00
Dave Page b14834b06c Use a matrix based test for the different EPAS versions.
This adds parallelism for the different versions, and separates the logs.
2023-04-05 16:09:37 +01:00
Dave Page 0987c955f5 Use a matrix based test for the different PostgreSQL versions.
This adds parallelism for the different versions, and separates the logs.
2023-04-05 16:04:20 +01:00
Dave Page bdb43f84e8 Correct the make target to install Python requirements for testing. 2023-04-05 15:06:59 +01:00
Dave Page 401358568a Simplify and standardise actions. 2023-04-05 15:01:11 +01:00
Dave Page 6969d5c16f Build docs using a venv, created by our in-tree script. 2023-04-05 13:59:30 +01:00
Dave Page 2d024fd7e6 Run Javascript tests on all three major platforms. 2023-04-05 13:39:44 +01:00
Dave Page 94bba36713 Support all current EPAS versions. 2023-04-04 14:48:32 +01:00
Akshay Joshi c08ec7a1bd Give proper permission to preinst script 2023-04-04 18:55:38 +05:30
Khushboo Vashi fa29ba9163 Fixed the LDAP authentication issue for the simultaneous login attempts. 2023-04-04 18:47:13 +05:30
Akshay Joshi c1a022c40c Update release note 2023-04-04 18:31:01 +05:30
Aditya Toshniwal a18d469c90 Fix an issue in search objects where objects were unable to locate occasionally. #5916 2023-04-04 18:29:54 +05:30
Akshay Joshi fdf7a459eb Added pre-installation steps to remove venv and web folder for RPM and Debian. 2023-04-04 18:28:59 +05:30
Dave Page abea2c7172 Add a script and Makefile targets for setting up Python environments.
This is primarily intended for simplifying Jenkins jobs.
2023-04-03 15:18:46 +01:00
Dave Page 6027fdc10c Remove target that no longer exists. 2023-04-03 15:09:19 +01:00
Aditya Toshniwal ca088e83f7 Fix server test cases for servers with blank password and trust 2023-04-03 17:51:35 +05:30
Aditya Toshniwal e334b87b4c Add an extra None check for password before encryption to avoid possible failure 2023-04-03 17:21:16 +05:30
Akshay Joshi 53b9fe1c86 Update version for release 7.0 2023-04-03 16:08:17 +05:30
Aditya Toshniwal 415e9c0ac5 Ensure that when execute_scalar is run for multiple queries in single SQL then the last query result is returned. 2023-04-03 16:07:34 +05:30
Yogesh Mahajan dfa367a127 Fixed video recording broken for feature tests due to selenium package update. 2023-04-03 15:28:42 +05:30
Khushboo Vashi bc5e710d49 Fixed error while executing continue in debugging session after some time of debug execution. #5953 2023-04-03 15:28:11 +05:30
Aditya Toshniwal c80f760d07 Pin NW.js to 0.72.0 in build files 2023-04-03 15:21:14 +05:30
Akshay Joshi 3eac4ba59e Fixed an issue where MSQL is not loading while creating a new login role. 2023-04-03 14:50:45 +05:30
Aditya Toshniwal 287c53cd5a Downgrade NW.js to 0.72.0 as the latest version is not showing taskbar icon on Windows 2023-04-03 13:49:21 +05:30
Aditya Toshniwal 6710969143 Rename 'Edit Object..' context menu back to 'Properties...'. #4734 2023-04-03 13:10:24 +05:30
Pravesh Sharma 6c7116a20c Fix an issue where insert was failing when copy pasting a row and saving in result grid. #5934 2023-04-03 10:57:45 +05:30
Libor M 17a4faeb6b Czech translation for version 7.0 2023-04-03 10:29:46 +05:30
Dave Page 4df23bd576 Add Python tests against EPAS 2023-03-31 16:25:43 +01:00
Yogesh Mahajan 33953e9119 Fixed intermittent error "Connection Lost" shown while connecting to database. 2023-03-31 16:17:04 +05:30
Aditya Toshniwal 94051a0991 Fix failing RE-SQL test cases for pgAgent. 2023-03-31 15:34:57 +05:30
Aditya Toshniwal f334b132d9 Revert react-dom from 18 to 17 as all libs may not support React 18.
Revert notistack to 1.x as later versions are not compatible with MUIv4.
2023-03-31 11:33:41 +05:30
dependabot[bot] b47c9039d7 Python dependency: Bump selenium in /web/regression
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.0.0a6 to 4.8.3.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 11:29:07 +05:30
Khushboo Vashi 659316d3cb Fix View data issue for the table without column. 2023-03-31 11:23:20 +05:30
Aditya Toshniwal 21cbc6e9e5 Fix SQLs generated for pgAgent related nodes which were causing issues after psycopg3 changes. #5011 2023-03-31 10:48:16 +05:30
Nikhil Mohite 50391ae3fd Fixed an issue loading file fails in Desktop mode 2023-03-31 10:47:48 +05:30
Domenico Sgarbossa ce637ecd4b Italian translations updated for v7.0 2023-03-31 10:46:34 +05:30
dependabot[bot] 5a870a102e Python dependency: Bump @wojtekmaj/enzyme-adapter-react-17 in /web
Bumps [@wojtekmaj/enzyme-adapter-react-17](https://github.com/wojtekmaj/enzyme-adapter-react-17) from 0.4.1 to 0.8.0.
- [Release notes](https://github.com/wojtekmaj/enzyme-adapter-react-17/releases)
- [Commits](https://github.com/wojtekmaj/enzyme-adapter-react-17/compare/v0.4.1...v0.8.0)

---
updated-dependencies:
- dependency-name: "@wojtekmaj/enzyme-adapter-react-17"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 10:45:54 +05:30
dependabot[bot] 3f5aafd263 Python dependency: Bump style-loader from 3.3.1 to 3.3.2 in /web
Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/webpack-contrib/style-loader/releases)
- [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/style-loader/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: style-loader
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 10:45:32 +05:30
dependabot[bot] c47876e9ce Python dependency: Bump notistack from 1.0.10 to 3.0.1 in /web
Bumps [notistack](https://github.com/iamhosseindhv/notistack) from 1.0.10 to 3.0.1.
- [Release notes](https://github.com/iamhosseindhv/notistack/releases)
- [Changelog](https://github.com/iamhosseindhv/notistack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/iamhosseindhv/notistack/compare/v1.0.10...v3.0.1)

---
updated-dependencies:
- dependency-name: notistack
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 10:45:14 +05:30
dependabot[bot] c638b2a500 Python dependency: Bump postcss-loader from 5.3.0 to 7.1.0 in /web
Bumps [postcss-loader](https://github.com/webpack-contrib/postcss-loader) from 5.3.0 to 7.1.0.
- [Release notes](https://github.com/webpack-contrib/postcss-loader/releases)
- [Changelog](https://github.com/webpack-contrib/postcss-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/postcss-loader/compare/v5.3.0...v7.1.0)

---
updated-dependencies:
- dependency-name: postcss-loader
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 10:44:55 +05:30
dependabot[bot] 78a48bbe7e Python dependency: Bump coverage from 5.0.1 to 7.2.2 in /web/regression
Bumps [coverage](https://github.com/nedbat/coveragepy) from 5.0.1 to 7.2.2.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/coverage-5.0.1...7.2.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 10:44:23 +05:30
dependabot[bot] 57fbeced39 Python dependency: Bump testtools from 2.5.0 to 2.6.0 in /web/regression
Bumps [testtools](https://github.com/testing-cabal/testtools) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/testing-cabal/testtools/releases)
- [Changelog](https://github.com/testing-cabal/testtools/blob/master/NEWS)
- [Commits](https://github.com/testing-cabal/testtools/compare/2.5.0...2.6.0)

---
updated-dependencies:
- dependency-name: testtools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 10:44:03 +05:30
dependabot[bot] d3d1f92102 Python dependency: Bump react-dom and @types/react-dom in /web
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together.

Updates `react-dom` from 17.0.2 to 18.2.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v18.2.0/packages/react-dom)

Updates `@types/react-dom` from 16.9.17 to 18.0.11
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: "@types/react-dom"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 10:43:44 +05:30
Dave Page 222de66a83 Run Python tests against all supported PostgreSQL versions. 2023-03-30 15:54:13 +01:00
Akshay Joshi 374941bfab Update message catalogs 2023-03-30 19:11:23 +05:30
Akshay Joshi d9fff8c480 Update Dependencies 2023-03-30 19:06:56 +05:30
Dave Page fb6e59bab8 Merge the doc builds into one action.
This will reduce the CPU time by avoiding multiple install/update cycles.
2023-03-30 11:45:08 +01:00
Khushboo Vashi 01ef5c664f Make sure pgadmin4-server package pulls libpq5 instead of libpq. 2023-03-30 16:05:03 +05:30
Dave Page da937e2618 Don't upgrade base images when running tests.
This takes a lot of time and CPU minutes, and Github keep the images pretty fresh anyway.
2023-03-30 11:23:57 +01:00
Dave Page e7bea6686b Fix many issues with the Python tests that only seem to show up on Github runners. 2023-03-30 11:16:46 +01:00
Aditya Toshniwal b780339abb Run only JS test cases in JS test case action 2023-03-30 11:15:35 +05:30
Dave Page bbc46c0990 Another missing sudo 2023-03-29 18:32:11 +01:00
Dave Page 1527daede8 Make sure we can edit the PostgreSQL config 2023-03-29 18:27:02 +01:00
Aditya Toshniwal 5330121b36 On pressing Ctrl+C on a tree object, copy the fully qualified name to clipboard. #5854 2023-03-29 21:45:09 +05:30
dependabot[bot] 3f78cfa092 Python dependency: Bump azure-mgmt-subscription from 3.0.0 to 3.1.1
Bumps [azure-mgmt-subscription](https://github.com/Azure/azure-sdk-for-python) from 3.0.0 to 3.1.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-mgmt-subscription_3.0.0...azure-mgmt-subscription_3.1.1)

---
updated-dependencies:
- dependency-name: azure-mgmt-subscription
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 21:43:22 +05:30
dependabot[bot] 8d1bf6f735 Python dependency: Bump nw from 0.70.1 to 0.74.0 in /runtime
Bumps [nw](https://github.com/nwjs/npm-installer) from 0.70.1 to 0.74.0.
- [Release notes](https://github.com/nwjs/npm-installer/releases)
- [Commits](https://github.com/nwjs/npm-installer/commits)

---
updated-dependencies:
- dependency-name: nw
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 21:40:15 +05:30
Dave Page cc4dfaf951 Run Python regression tests. 2023-03-29 16:46:53 +01:00
Dave Page d3f058cf1f Don't include built assets in the source tarball.
It looks like code to build and include Javascript bundles was added when React
was first included in the project. This shouldn't be the case - the source tarball
should contain only the source code.
2023-03-29 15:08:35 +01:00
dependabot[bot] 87985e9e45 Python dependency: Bump eslint from 7.32.0 to 8.37.0 in /web
Bumps [eslint](https://github.com/eslint/eslint) from 7.32.0 to 8.37.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.32.0...v8.37.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 18:24:13 +05:30
dependabot[bot] b056fa5914 Python dependency: Bump azure-identity from 1.9.0 to 1.12.0
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.9.0 to 1.12.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.9.0...azure-identity_1.12.0)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 18:23:33 +05:30
dependabot[bot] fc7edd76e1 Python dependency: Bump @typescript-eslint/parser in /web
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.55.0 to 5.57.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.57.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 18:23:03 +05:30
dependabot[bot] a705a37999 Python dependency: Bump webpack from 5.76.0 to 5.76.3 in /web
Bumps [webpack](https://github.com/webpack/webpack) from 5.76.0 to 5.76.3.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.76.0...v5.76.3)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 18:22:45 +05:30
dependabot[bot] 7ee68d98d6 Python dependency: Bump react-select from 4.3.1 to 5.7.2 in /web
Bumps [react-select](https://github.com/JedWatson/react-select) from 4.3.1 to 5.7.2.
- [Release notes](https://github.com/JedWatson/react-select/releases)
- [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/JedWatson/react-select/compare/react-select@4.3.1...react-select@5.7.2)

---
updated-dependencies:
- dependency-name: react-select
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 18:22:03 +05:30
Dave Page ac4827c33b Don't let actions pile up! 2023-03-29 13:08:53 +01:00
Akshay Joshi 140494454a Fixed linter errors after eslint upgrade. 2023-03-29 17:22:50 +05:30
Dave Page 43449be18c Run Javascript tests. 2023-03-29 12:51:27 +01:00
dependabot[bot] b37c5ff8c7 Python dependency: Bump axios from 0.21.4 to 1.3.4 in /runtime
Bumps [axios](https://github.com/axios/axios) from 0.21.4 to 1.3.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.4...v1.3.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 17:20:40 +05:30
dependabot[bot] 150a438a77 Python dependency: Bump pbr from 3.1.1 to 5.11.1 in /web/regression
Bumps [pbr](https://docs.openstack.org/pbr/latest/) from 3.1.1 to 5.11.1.

---
updated-dependencies:
- dependency-name: pbr
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:58:24 +05:30
dependabot[bot] fb91ec1b75 Python dependency: Bump fixtures from 3.0.0 to 4.0.1 in /web/regression
Bumps [fixtures](https://github.com/testing-cabal/fixtures) from 3.0.0 to 4.0.1.
- [Release notes](https://github.com/testing-cabal/fixtures/releases)
- [Changelog](https://github.com/testing-cabal/fixtures/blob/master/NEWS)
- [Commits](https://github.com/testing-cabal/fixtures/compare/3.0.0...4.0.1)

---
updated-dependencies:
- dependency-name: fixtures
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:57:52 +05:30
dependabot[bot] 9556e64c54 Python dependency: Bump karma-sourcemap-loader in /web
Bumps [karma-sourcemap-loader](https://github.com/demerzel3/karma-sourcemap-loader) from 0.3.8 to 0.4.0.
- [Release notes](https://github.com/demerzel3/karma-sourcemap-loader/releases)
- [Changelog](https://github.com/demerzel3/karma-sourcemap-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/demerzel3/karma-sourcemap-loader/commits/0.4.0)

---
updated-dependencies:
- dependency-name: karma-sourcemap-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:57:20 +05:30
dependabot[bot] 150b91f195 Python dependency: Bump webpack-bundle-analyzer in /web
Bumps [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) from 4.7.0 to 4.8.0.
- [Release notes](https://github.com/webpack-contrib/webpack-bundle-analyzer/releases)
- [Changelog](https://github.com/webpack-contrib/webpack-bundle-analyzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/webpack-bundle-analyzer/compare/v4.7.0...v4.8.0)

---
updated-dependencies:
- dependency-name: webpack-bundle-analyzer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:57:01 +05:30
dependabot[bot] af7f58b4d2 Python dependency: Update pywinpty requirement from ==1.1.* to ==2.0.*
Updates the requirements on [pywinpty](https://github.com/spyder-ide/pywinpty) to permit the latest version.
- [Release notes](https://github.com/spyder-ide/pywinpty/releases)
- [Changelog](https://github.com/andfoy/pywinpty/blob/main/CHANGELOG.md)
- [Commits](https://github.com/spyder-ide/pywinpty/compare/v1.1.0...v2.0.10)

---
updated-dependencies:
- dependency-name: pywinpty
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:56:41 +05:30
dependabot[bot] 0f525c8401 Python dependency: Bump @babel/eslint-parser in /web
Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.19.1 to 7.21.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.21.3/eslint/babel-eslint-parser)

---
updated-dependencies:
- dependency-name: "@babel/eslint-parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:50:35 +05:30
dependabot[bot] b7b94da285 Python dependency: Update cryptography requirement in /web/regression
Updates the requirements on [cryptography](https://github.com/pyca/cryptography) to permit the latest version.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/39.0.0...40.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:50:12 +05:30
dependabot[bot] 1780973bb3 Python dependency: Bump azure-mgmt-resource from 21.0.0 to 23.0.0
Bumps [azure-mgmt-resource](https://github.com/Azure/azure-sdk-for-python) from 21.0.0 to 23.0.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-mgmt-resource_21.0.0...azure-mgmt-resource_23.0.0)

---
updated-dependencies:
- dependency-name: azure-mgmt-resource
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:49:44 +05:30
dependabot[bot] 85bb7bf772 Python dependency: Bump azure-mgmt-resource in /web/regression.
Bumps [azure-mgmt-resource](https://github.com/Azure/azure-sdk-for-python) from 21.0.0 to 23.0.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-mgmt-resource_21.0.0...azure-mgmt-resource_23.0.0)

---
updated-dependencies:
- dependency-name: azure-mgmt-resource
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:49:22 +05:30
dependabot[bot] 2f42481346 Python dependency: Bump eslint from 6.8.0 to 8.37.0 in /runtime (#6036)
Bumps [eslint](https://github.com/eslint/eslint) from 6.8.0 to 8.37.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.8.0...v8.37.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:48:40 +05:30
dependabot[bot] f5e2157658 Python dependency: Bump @typescript-eslint/eslint-plugin in /web (#6031)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.55.0 to 5.57.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.57.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 16:48:20 +05:30
Nikhil Mohite 48839983fd Updated config file documentation for shared storage and While doing save as operation, ensure the error message is shown if access is restricted in shared storage #5014 2023-03-29 13:49:32 +05:30
Aditya Toshniwal 36d18ba5cb Changes in accesskey display code to reflect all supported browser+OS combinations. #5022 2023-03-29 13:49:11 +05:30
Yogesh Mahajan a607ab2d94 Another try to fix role related feature tests. 2023-03-29 13:48:54 +05:30
Akshay Joshi ec33c3e7ec Update release note 2023-03-28 22:26:03 +05:30
Aditya Toshniwal 9924fae378 Nomenclature changes:
1. Rename "Properties..." context menu option of object to "Edit Object...".
2. Rename "Browser" tree to "Object Explorer". #4734
2023-03-28 22:20:14 +05:30
Nikhil Mohite 05f3efbc97 Fixed jasmine and API test cases for import/export servers. 2023-03-28 22:19:01 +05:30
Dave Page e797eb17eb Cleanup and improve robustness of Github actions. 2023-03-28 14:24:04 +01:00
Yogesh Mahajan fc0e36b313 Removed old path library used to validate client secret path while google authentication. #5750 2023-03-28 11:27:16 +05:30
Ashesh Vashi c78904501d 1) Correct the name of the python binary to use with mod_wsgi.
2) Remove logic for Ubuntu 18 as we remove the support for it.
2023-03-28 11:20:04 +05:30
Yogesh Mahajan 501bff6f7a Ensure google authentication can be completed successfully, while pgAdmin is running in behind proxy servers. #5750 2023-03-28 11:07:41 +05:30
Akshay Joshi 12f82820c9 Fix an issue where Backup, Restore, and Maintenance not working if connection timeout is set in the server dialog. #5959 2023-03-27 17:41:19 +05:30
Aditya Toshniwal 66cb4e3bcf Auto expand row edit form when a new row is added for Primary Key, Foreign Key, Unique Constraint and Exclusion Constraint. #3298 2023-03-27 17:14:37 +05:30
Yogesh Mahajan 51c22608b2 Update BigAnimal documentation for BigAnimal v3 API changes. #5805 2023-03-27 17:10:28 +05:30
Dave Page 034e96f713 Use Yarn 2 for Docker builds to avoid network timeout issues. 2023-03-27 10:58:18 +01:00
Yogesh Mahajan 97bd417ea8 Fixed intermittent failures for the role related feature tests. 2023-03-27 11:51:28 +05:30
Khushboo Vashi 7ce03f3bea Fix UUID datatype typecast issue. 2023-03-27 11:38:57 +05:30
Akshay Joshi 636ab5cbab Change the foreground color of the code mirror text for Dark Theme. #6018 2023-03-27 11:35:54 +05:30
Pravesh Sharma eef7461ae6 Ensure that default values are set only for insert statement if user does not provide any values, in case of updating existing values to blank it should be set to null. #5934
Incorporated review comments
2023-03-27 10:22:28 +05:30
Dave Page 49b5ab71c2 Use repo commit URLs that Yarn 2+ is happy with. 2023-03-24 16:30:38 +00:00
Dave Page bf25fcc919 Ignore some yarn 2 artefacts. 2023-03-24 16:19:59 +00:00
Nikhil Mohite b429a38176 Fixed shared storage file accessibility issues in import/export servers and cloud deployment. #5014 2023-03-24 16:27:02 +05:30
Akshay Joshi c8945883c1 Update release note 2023-03-24 16:10:11 +05:30
Yogesh Mahajan 40013fb26c Added support of BigAnimal v3 API. #5805 2023-03-24 16:07:02 +05:30
Yogesh Mahajan 58aca506fe Fixed error occurring while authentication in Google Cloud SQL deployment wizard in server mode. #5750 2023-03-24 15:50:37 +05:30
Dave Page 8700a17dad Concurrent SonarQube runs can cause problems if they report times out of order 2023-03-24 10:16:08 +00:00
Aditya Toshniwal 1d01b5a8a2 Add a note on top of keyboard shortcuts preferences to show the Accesskey of the browser. #5022 2023-03-24 15:44:43 +05:30
Akshay Joshi 207812582d 1) Fixed RESQL test case for EPAS.
2) Update Dependencies.
2023-03-24 14:37:35 +05:30
Yogesh Mahajan f1aa82ad36 While restoring the database connections due to lost server connection, ensure that the databases which were previously connected are only reconnected. #5919 2023-03-24 14:33:45 +05:30
Khushboo Vashi 5cb64f7602 Fix Debugger restart issue. 2023-03-24 14:33:07 +05:30
Akshay Joshi 70b2ead852 Ensure that the schema diff tool should not allow comparison between Postgres Server and EDB Postgres Advanced Server. #5952 2023-03-24 13:03:35 +05:30
dependabot[bot] 7e8cc539dc Python dependency: Bump webfonts-loader from 7.5.2 to 8.0.1 in /web
Bumps [webfonts-loader](https://github.com/jeerbl/webfonts-loader) from 7.5.2 to 8.0.1.
- [Release notes](https://github.com/jeerbl/webfonts-loader/releases)
- [Commits](https://github.com/jeerbl/webfonts-loader/compare/v7.5.2...v8.0.1)

---
updated-dependencies:
- dependency-name: webfonts-loader
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-24 11:09:35 +05:30
dependabot[bot] fb448bcecc Python dependency: Bump flask-wtf from 1.0.1 to 1.1.1 in /web/regression
Bumps [flask-wtf](https://github.com/wtforms/flask-wtf) from 1.0.1 to 1.1.1.
- [Release notes](https://github.com/wtforms/flask-wtf/releases)
- [Changelog](https://github.com/wtforms/flask-wtf/blob/main/docs/changes.rst)
- [Commits](https://github.com/wtforms/flask-wtf/compare/v1.0.1...v1.1.1)

---
updated-dependencies:
- dependency-name: flask-wtf
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-24 11:09:01 +05:30
Nikhil Mohite e4eeba2aa7 Fixed the UI related issues reported during testing for Shared Storage in Server Mode. #5014 2023-03-24 11:08:27 +05:30
Dave Page 8b815d4aac Archive builds on Github. 2023-03-23 16:51:18 +00:00
Dave Page e046101305 Add a tarball build check action. 2023-03-23 15:31:37 +00:00
Dave Page 88fc8772d1 Add a Python wheel build check action. 2023-03-23 15:31:11 +00:00
Dave Page 4549abb6b3 Add an PDF build check action. 2023-03-23 15:24:52 +00:00
Dave Page 13a3b153e5 Add an ePub build check action. 2023-03-23 15:09:22 +00:00
Dave Page 2353702f0b Make the doc build action a little more efficient. 2023-03-23 15:07:40 +00:00
Dave Page 0e38d1b82b Remove remnants of CentOS/RHEL 7 packaging. 2023-03-23 14:02:58 +00:00
Akshay Joshi e03676f138 Update release note 2023-03-23 18:52:33 +05:30
Dave Page faab0c3896 Configure dependabot for pgAdmin. 2023-03-23 18:51:00 +05:30
Dave Page bf38a0caa8 Run SonarQube scans on pushes to the master branch. 2023-03-23 18:49:58 +05:30
Aditya Toshniwal 319701dbbd Ensure that when pasting rows the rows are added right below the selected rows for copying. #5921 2023-03-23 18:49:15 +05:30
Yogesh Mahajan a026353df8 Fixed the UI related issues reported during testing for Google Cloud SQL deployment. #5750 2023-03-23 11:51:21 +05:30
Khushboo Vashi c5e1e74757 Added missing dependency for psycopg3 in the wheel package. 2023-03-23 11:50:52 +05:30
Dave Page a66dfff39d Add a Github action to check the container build. 2023-03-22 16:07:04 +00:00
Dave Page 38f0809858 Add a Github action to check translations look OK. 2023-03-22 16:06:45 +00:00
Dave Page f3ee014cbd Remove some old makefile targets that are no longer required. 2023-03-22 15:34:07 +00:00
Aditya Toshniwal 64ddfc0eb7 Fix an issue where server foreground/background color was not getting applied after jQuery changes. #5701 2023-03-21 17:39:37 +05:30
Nikhil Mohite 8fbe2fb8f2 Fixed TypeError: changelist must be an iterable of select.kevent objects occurring with eventlet & Python3.9.* 2023-03-21 17:37:55 +05:30
Akshay Joshi ff5b92aaeb Update release note. 2023-03-20 18:25:25 +05:30
Yogesh Mahajan 1b327d1997 Fix issues reported during testing. #5750 2023-03-20 18:22:16 +05:30
Aditya Toshniwal eba306618c Fix issues related to packages update. #5901 2023-03-20 18:21:33 +05:30
Aditya Toshniwal b923f5fcfa Use fetch instead of axios to close connections in SQLEditor, ERD, Schema Diff and Debugger to ensure it completes. When closing a browser tab, axios does not guarantee AJAX request completion. #5894 2023-03-20 18:20:48 +05:30
Khushboo Vashi 64aa739224 Fix SQLEditor Notifier and InetLoader issue. 2023-03-20 18:20:25 +05:30
Khushboo Vashi 366dd3a973 Remove psycopg2 completely. 2023-03-20 16:57:30 +05:30
Akshay Joshi f43b3b0ce5 After upgrading SQLAlchemy, use _asdict().items() instead of .items(). 2023-03-20 16:48:12 +05:30
Akshay Joshi 3ca7bb854f Fixed an issue where migration on external database is not working. #5941 2023-03-20 16:18:59 +05:30
Nikhil Mohite 97d3b6c7db Update documentation for shared storage. #5014 2023-03-20 14:11:57 +05:30
Akshay Joshi 28e1e34407 Correct the command to create virtual environment. 2023-03-17 19:22:14 +05:30
Akshay Joshi 5a0731587a 1) Try to fix Jenkins failure.
2) Update release note
2023-03-17 18:16:17 +05:30
dependabot[bot] 4577acae71 Bump webpack from 5.75.0 to 5.76.0 in /web
Bumps [webpack](https://github.com/webpack/webpack) from 5.75.0 to 5.76.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-17 17:48:13 +05:30
Akshay Joshi f9fee9103b Use correct python binary for Ubuntu 18 and EL-8. 2023-03-17 17:47:53 +05:30
Yogesh Mahajan 6c12829cd4 Validate user inputs provided in configuration files before starting pgadmin server. #5907 2023-03-17 17:46:11 +05:30
Pravesh Sharma a9399030f4 Fixed issue where pgAgent jobs were not getting dropped from properties tab #5834 2023-03-17 17:43:42 +05:30
Akshay Joshi e6e49091b6 Updated release note. 2023-03-16 17:26:14 +05:30
Aditya Toshniwal 3ce1589681 Fix an issue where query tool is stuck when running query after discarding changed data. #5955 2023-03-16 17:23:57 +05:30
Aditya Toshniwal 42ac0d577d Add .ts and .tsx files under linter and fix linter issues. #5830 2023-03-16 17:22:26 +05:30
Aditya Toshniwal 37c0de5d7d Fix an issue where new dashboard graphs are partially following theme colors. #5958 2023-03-16 17:21:56 +05:30
Aditya Toshniwal 7b18ce10fe Fix layout saving which didn't work after jQuery changes. #5701 2023-03-15 18:57:31 +05:30
Pravesh Sharma 89c8a7f907 Added option to create unique constraint with nulls not distinct. #5855 2023-03-15 18:55:42 +05:30
Yogesh Mahajan 3de2e625b5 Fix feature test failures caused due to invalid binary path. 2023-03-15 18:54:22 +05:30
Akshay Joshi 8c8be6461c Remove pyOpenSSL from requirements 2023-03-15 12:21:43 +05:30
Aditya Toshniwal 292d76b39e Update SQLAlchemy, Flask, Flask-SQLAlchemy, and other packages to current versions. #5901
- Update Flask, Flask-SQLAlchemy, Flask-Babel, Flask-Security-Too, Flask-SocketIO, pytz, psutil, SQLAlchemy, bcrypt, cryptography, eventlet, Authlib, requests python packages
- Remove pinned dnspython, Werkzeug packages from requirements.txt
2023-03-15 11:57:16 +05:30
Akshay Joshi 294282c7ca Fixed circular import error. 2023-03-14 18:40:53 +05:30
Akshay Joshi 0a543d0e95 Ensure that the user's storage directory is created when the users are created, as well as for those users who have not yet been created. #5824 2023-03-14 18:21:18 +05:30
Yogesh Mahajan 48f2e2744c Fixed feature tests failures occurred due to psycopg3 changes. 2023-03-14 17:51:14 +05:30
Dave Page e408049bae Update supported Python versions. 2023-03-14 11:53:05 +00:00
Khushboo Vashi d053742ca4 Change psycopg-binary in setup_pip.py file. 2023-03-14 15:59:49 +05:30
Akshay Joshi 59edf50c02 Update release note 2023-03-14 13:50:00 +05:30
Aditya Toshniwal fea1b9cf82 Use http for SVG namespace URLs which were changed to https for SonarQube fixes. #5943 2023-03-14 13:48:43 +05:30
Aditya Toshniwal f72f4aa359 Dashboard graph Y-axis width should increase with label. #5929 2023-03-14 11:04:08 +05:30
Akshay Joshi e32019882e Update relese note 2023-03-13 14:58:40 +05:30
Yogesh Mahajan 63c7d14638 Added capability to deploy PostgreSQL servers on Google Cloud. #5750 2023-03-13 14:56:16 +05:30
Akshay Joshi 6ab43e4582 Update release note 2023-03-13 11:52:51 +05:30
Aditya Toshniwal ec32099d2f Show appropriate error message when master password is not set instead of 'Crypt key missing'. #5735 2023-03-13 11:51:35 +05:30
Khushboo Vashi 66c4b9d05a Fix Debugger test cases. 2023-03-13 11:51:15 +05:30
Akshay Joshi fead2b25be Changing psycopg to psycopg2 as the package upgrade PR has been reverted 2023-03-09 17:31:08 +05:30
Akshay Joshi 3c56c0e4b7 Revert "Update SQLAlchemy, Flask, Flask-SQLAlchemy, and other packages to current versions. #5901"
This reverts commit 31818bb67a.
2023-03-09 16:53:43 +05:30
Akshay Joshi c63442732b Remove pyOpenSSL package from requirements. 2023-03-09 11:35:57 +05:30
Akshay Joshi 4d5c915144 Update release note 2023-03-08 18:34:37 +05:30
Khushboo Vashi 323fcad8a7 Upgrade postgresql-devel package. 2023-03-08 18:27:54 +05:30
Aditya Toshniwal 31818bb67a Update SQLAlchemy, Flask, Flask-SQLAlchemy, and other packages to current versions. #5901
Remove the python version check from the requirements.txt.
2023-03-08 18:26:51 +05:30
Akshay Joshi 6bd0ea7a02 Fixed an issue where the file name in the query tool tab was not changing if another file is opened. #5909 2023-03-08 17:37:45 +05:30
Reese Russell 53f460ca7d Fixed typo 2023-03-08 11:23:41 +05:30
Nikhil Mohite 79de2ad571 Fixed jasmine test cases. 2023-03-08 11:20:39 +05:30
Akshay Joshi 17f18e795f Fixed an issue where the count query should not be triggered when the estimated count is less than zero. #5904 2023-03-07 16:16:34 +05:30
Akshay Joshi ca33283930 Make 'using' and 'with check' fields a textarea in the RLS policy. #5874 2023-03-07 12:19:03 +05:30
Akshay Joshi 262d1a1c95 Update release note and version number 2023-03-06 17:10:22 +05:30
Nikhil Mohite 9da8a188fa Added support for mounting shared storage in server mode. #5014 2023-03-06 17:03:47 +05:30
Khushboo Vashi c35d449d7e Fix query mogrify issue. 2023-03-06 16:57:31 +05:30
Akshay Joshi 9b7a38ac52 Ensure that the database migration does not fail with a NoSuchTableError exception. #5870 2023-03-06 15:41:02 +05:30
Akshay Joshi 948feeb11f Update release note 2023-03-02 11:04:18 +05:30
Yogesh Mahajan 740164fbd0 Handle errors occurring during decoding UTF-8 encoded query result data which contains ascii characters. #4784 2023-03-02 11:03:17 +05:30
Anil Sahoo 5abb748c3e Display the 'No menu available for this object' message if the selected tree node does not have any options. #5775 2023-03-02 11:02:15 +05:30
Akshay Joshi ff3555cf1d Update release notes. 2023-03-02 10:59:38 +05:30
Khushboo Vashi 89a2e427f3 Added libpq5 and libpq5-dev to the Redhat build script. 2023-02-28 17:58:58 +05:30
Dave Page ff25afb88e Add missing import. 2023-02-28 11:24:35 +00:00
Akshay Joshi 55b917f24b 1) Ensure that when '--pkg resql' is provided then only RESQL test cases should run.
2) Fixed the RESQL test cases for Sequences. #5810
2023-02-28 16:24:29 +05:30
Akshay Joshi a008f9ba79 Fixed an issue where the database server is not connected using a service file. #5889 2023-02-28 13:29:58 +05:30
Nikhil Mohite 1c0b826d23 Fixed schema diff UI alignment issues. 2023-02-27 15:47:24 +05:30
Pravesh Sharma 59b47847d7 Fixed an issue where user MFA entry was not getting delete after deleting a user. #5833 2023-02-27 15:46:33 +05:30
Akshay Joshi 486e68b8be Update release note 2023-02-22 14:08:40 +05:30
Khushboo Vashi b640df5bdd Fix Query Tool error messages for psycopg3 driver. 2023-02-22 14:07:05 +05:30
Aditya Toshniwal 9abbd30790 Fix an issue where sequence owner is remove on sequence edit. #5810 2023-02-22 14:06:44 +05:30
Aditya Toshniwal cf28d7df32 Fix an issue where query tool is stripping spaces in grid cell. #5803 2023-02-22 14:06:13 +05:30
Akshay Joshi f404fdcf8a Fixed an issue where the user can't create trigger AFTER UPDATE OF. #5790 2023-02-20 17:37:17 +05:30
Aditya Toshniwal 08062e67ca Do not allow to save invalid JSON in query tool JSON editor. #5822 2023-02-20 15:37:59 +05:30
Aditya Toshniwal 8967a510c9 Handle MERGE operation in query tool explain introduced in PostgreSQL 15. #5872 2023-02-20 15:36:22 +05:30
Akshay Joshi e56a1f3e2d Update release note 2023-02-20 13:26:22 +05:30
Pravesh Sharma b1e6eaad61 Fixed an issue where query was not pasted to editor after trojan source warning. #5760 2023-02-20 13:25:35 +05:30
Khushboo Vashi b9cbf08b51 Another try to fix JSON issues. 2023-02-20 11:21:32 +05:30
Aditya Toshniwal aeb4867bdf Few dashboard graph improvements. 2023-02-18 15:46:37 +05:30
Khushboo Vashi 5f52bb59dd Fix json issues (#5865) 2023-02-16 10:46:39 +00:00
Akshay Joshi a0b8676f61 Fixed an issue where an object of type bytes is not JSON serializable when saving the data from the query tool. 2023-02-15 15:20:18 +05:30
Khushboo Vashi 5e0daccf76 Added support for psycopg3 along with psycopg2. #5011 2023-02-15 11:31:29 +05:30
Matěj Cepl 7a4951f211 Remove dependency on simplejson package. 2023-02-15 11:10:12 +05:30
Akshay Joshi d8c5bc4320 Ensure that content on the DDL comparison panel should get refreshed on selecting the object using the up and down arrow keys. #5747 2023-02-14 17:15:04 +05:30
Anil Sahoo 5303a36ff4 Fixed an issue where Clear Saved Password should be disabled if the password is already cleared. #5773 2023-02-14 15:47:40 +05:30
Akshay Joshi e70f115b48 Update release note 2023-02-14 11:06:15 +05:30
Pravesh Sharma 8388f1e7ba Fix for query tool prompting for unsaved changes even if no changes have been made. #5756 2023-02-14 11:04:30 +05:30
Akshay Joshi f623d563b1 Ensure that the schema diff tool should pick up the change in the column grants. #5269 2023-02-13 17:54:38 +05:30
Akshay Joshi 0fd1e0963e Fixed an issue where pgAdmin failed to connect when the Postgres password included special characters. #5847 2023-02-13 16:49:18 +05:30
Yogesh Mahajan 026334a71a Removed logging added for feature test failure. Added more assets to avoid false failures. 2023-02-13 11:58:54 +05:30
Paul Milbank 83ec0f3d90 Add additional logging for successful logins and user creation. #5842 2023-02-13 11:11:05 +05:30
Anil Sahoo ed2b8ea1de Fix an issue where the maintenance dialog for Materialized View gives an error. #5764 2023-02-10 15:19:53 +05:30
Aditya Toshniwal be72cee6be Fix failing jasmin test cases. #5701 2023-02-10 14:47:29 +05:30
Yogesh Mahajan ff877d6e91 Added logging for feature test failure on jenkins job. 2023-02-10 12:39:42 +05:30
Akshay Joshi b0846908da Correct the OR operator. #5758 2023-02-10 12:38:53 +05:30
Akshay Joshi 428e432732 Update release note 2023-02-10 10:38:17 +05:30
Pravesh Sharma ff6f0825b8 Fixed an issue where lock layout menu was not in sync with preferences. #5758 2023-02-10 10:31:02 +05:30
Aditya Toshniwal 713ddb5f62 Remove usage of jQuery in pgAdmin.
Remove usage of Bootstrap in React components. #5701
2023-02-10 10:28:39 +05:30
Aditya Toshniwal 1806866bf5 Allow changing cardinality notation in ERD to use Chen notation. #5832 2023-02-10 10:27:16 +05:30
Akshay Joshi 696cb0fa05 Ensure that Grant column permission to a view is visible in the SQL tab. #5685 2023-02-10 10:26:01 +05:30
Dave Page cf948603cf Update copyright notices in Dockerfile and Makefile and ensure they don't get missed again. 2023-02-08 14:28:57 +00:00
Akshay Joshi 426cc683eb Update version for release v6.20 2023-02-06 16:08:50 +05:30
Akshay Joshi 027f23bc47 Update Dependencies 2023-02-06 16:07:50 +05:30
Akshay Joshi 6833fdd731 Ensure that keyboard hotkey to open query tool and search object should work properly. #5763 2023-02-06 15:58:33 +05:30
Aditya Toshniwal 4a3bcfa202 Use uplot for Dashboard graphs to reduce CPU usage. #5794 2023-02-06 15:55:02 +05:30
Aditya Toshniwal f3bb4776e4 Fix an issue where drag and drop object names is not working. #5761 2023-02-06 15:29:27 +05:30
rlbxku1r c2acaa2fc8 Update Japanese translation for v6.20 2023-02-06 11:05:19 +05:30
Domenico Sgarbossa 4c34781b15 Updated Italian Translation for v6.20 2023-02-06 11:04:53 +05:30
Akshay Joshi a3202ccb2d Update message catalogs 2023-02-02 20:22:13 +05:30
Akshay Joshi ca43f938bd 1. Ensure that the system columns should not visible in the import/export data. #5733
2. Fixed console error while attaching the partition. #5748
2023-02-02 18:14:38 +05:30
Nikhil Mohite b3a3b8beab Revert "Fixed an issue where the default value of string for columns should wrap in quotes in the create script. #5577"
This reverts commit 34e409f313.
2023-02-02 15:32:29 +05:30
Aditya Toshniwal cdc1248794 Send the username to server node when created. #5702 2023-02-02 13:58:09 +05:30
Akshay Joshi adc7155fe9 Make a backup of the old SQLite database to support running older versions if necessary. #4728 2023-02-01 17:52:58 +05:30
Pravesh Sharma e247867abf Incorporated review comments for #5705 2023-02-01 14:24:49 +05:30
Akshay Joshi aa6c199e98 Added bundled PG utilities in the release note. #4320 2023-02-01 13:12:37 +05:30
Aditya Toshniwal 932dcd9666 Fix an issue where role is used as username for newly added servers when opening query tool. #5702 2023-02-01 13:11:00 +05:30
Akshay Joshi 103cf0eba5 Fixed a migration issue for the external database. #4728 2023-01-31 15:53:16 +05:30
Akshay Joshi ff4a409e27 Update release note 2023-01-31 13:06:29 +05:30
Nikhil Mohite b02f81505b Ensure nested menu items are shown in quick search result. #5796 2023-01-31 13:04:49 +05:30
Aditya Toshniwal ec86152396 Revert audit fix changes and ignore the low severity Vulnerability. 2023-01-31 13:01:52 +05:30
Aditya Toshniwal cdcc4e7314 Fix python audit issues. 2023-01-31 11:20:36 +05:30
dependabot[bot] d206b1c403 Bump ua-parser-js from 0.7.32 to 0.7.33 in /web (#5791)
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.32 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.32...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-30 15:40:00 +05:30
Khushboo Vashi 7a18ceab64 Fixed the server heartbeat logging issue when server is removed. #5567 2023-01-30 15:39:34 +05:30
Akshay Joshi ea3dffe78d 1) Fixed an issue where Query history is not getting loaded with an external database. #5781
2) Change the datatype of the value column of the setting table to text instead of a string. #5746
3) Fixed an issue where the key 'passfile' is not found. #4728
2023-01-30 15:38:36 +05:30
Akshay Joshi fd1c26408b Modify the logic to show the connection string for the shared servers. #4728 2023-01-24 17:22:54 +05:30
Khushboo Vashi 7dc0c1d05c Make the heartbeat normal thread to the daemon thread. #5567 2023-01-24 17:22:29 +05:30
Akshay Joshi a7cf698d09 1) Added support for setting PostgreSQL connection parameters. #4728
2) Fixed an issue where Kerberos authentication to the server is not imported/exported. #5732
3) Increase the length of the value column of the setting table. #5746
4) Upgrade Flask-Migrate to 4.0.0. #5525
2023-01-23 17:19:59 +05:30
Akshay Joshi 91049445dd Update release note 2023-01-19 15:58:44 +05:30
Khushboo Vashi 6ae91592d1 Fix orphan database connections resulting in an inability to connect to databases. #5567 2023-01-19 15:57:02 +05:30
Aditya Toshniwal 22cc658dca Fix failing import servers CLI due to vulnerability fix. #5751 2023-01-18 13:19:21 +05:30
Akshay Joshi 10c6a4f8dc 1) Unpin Sphinx version as the issue has been fixed in v 6.1.3
2) Update release note
2023-01-17 17:30:22 +05:30
Pravesh Sharma 9c4573fd80 Ensure that all parts of the application recommend and enforce the same length of passwords. #5705 2023-01-17 17:20:32 +05:30
Nikhil Mohite a48828e7a3 Improve performance by removing signal-based zoom-in, zoom-out, etc functionality from the runtime environment. #5723 2023-01-17 17:18:35 +05:30
4822 changed files with 441666 additions and 218437 deletions

No files matched your search

+186
View File
@@ -0,0 +1,186 @@
language: en-US
tone_instructions: ''
early_access: false
enable_free_tier: true
reviews:
profile: chill
request_changes_workflow: false
high_level_summary: true
high_level_summary_placeholder: '@coderabbitai summary'
high_level_summary_in_walkthrough: false
auto_title_placeholder: '@coderabbitai'
auto_title_instructions: ''
review_status: true
commit_status: true
fail_commit_status: false
collapse_walkthrough: false
changed_files_summary: true
sequence_diagrams: true
estimate_code_review_effort: true
assess_linked_issues: true
related_issues: true
related_prs: true
suggested_labels: true
labeling_instructions: []
auto_apply_labels: false
suggested_reviewers: true
auto_assign_reviewers: false
in_progress_fortune: true
poem: false
path_filters: []
path_instructions: []
abort_on_close: true
disable_cache: false
auto_review:
enabled: true
auto_incremental_review: true
ignore_title_keywords: []
labels: []
drafts: false
base_branches: []
ignore_usernames: []
finishing_touches:
docstrings:
enabled: true
unit_tests:
enabled: true
pre_merge_checks:
docstrings:
mode: warning
threshold: 80
title:
mode: warning
requirements: ''
description:
mode: warning
issue_assessment:
mode: warning
custom_checks: []
tools:
ast-grep:
rule_dirs: []
util_dirs: []
essential_rules: true
packages: []
shellcheck:
enabled: true
ruff:
enabled: true
markdownlint:
enabled: true
github-checks:
enabled: true
timeout_ms: 900000
languagetool:
enabled: true
enabled_rules: []
disabled_rules: []
enabled_categories: []
disabled_categories: []
enabled_only: false
level: default
biome:
enabled: true
hadolint:
enabled: true
swiftlint:
enabled: true
phpstan:
enabled: true
level: default
phpmd:
enabled: true
phpcs:
enabled: true
golangci-lint:
enabled: true
yamllint:
enabled: true
gitleaks:
enabled: true
checkov:
enabled: true
detekt:
enabled: true
eslint:
enabled: true
flake8:
enabled: true
rubocop:
enabled: true
buf:
enabled: true
regal:
enabled: true
actionlint:
enabled: true
pmd:
enabled: true
clang:
enabled: true
cppcheck:
enabled: true
semgrep:
enabled: true
circleci:
enabled: true
clippy:
enabled: true
sqlfluff:
enabled: true
prismaLint:
enabled: true
pylint:
enabled: true
oxc:
enabled: true
shopifyThemeCheck:
enabled: true
luacheck:
enabled: true
brakeman:
enabled: true
dotenvLint:
enabled: true
htmlhint:
enabled: true
checkmake:
enabled: true
osvScanner:
enabled: true
chat:
art: true
auto_reply: true
integrations:
jira:
usage: auto
linear:
usage: auto
knowledge_base:
opt_out: false
web_search:
enabled: true
code_guidelines:
enabled: true
filePatterns: []
learnings:
scope: auto
issues:
scope: auto
jira:
usage: auto
project_keys: []
linear:
usage: auto
team_keys: []
pull_requests:
scope: auto
mcp:
usage: auto
disabled_servers: []
code_generation:
docstrings:
language: en-US
path_instructions: []
unit_tests:
path_instructions: []
+1 -1
View File
@@ -1,5 +1,5 @@
.git
web/node_modules
web/config_*.py
web/*.log
web/regression
web/**/tests/
+2
View File
@@ -0,0 +1,2 @@
# Auto detect text files and normalize end of lines to LF (\n)
* text=auto eol=lf
+1 -1
View File
@@ -34,7 +34,7 @@ If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. Windows 10, OSX monterey]
- Version: [e.g. 6.15]
- pgAdmin version: [e.g. 6.15]
- Mode: [e.g Desktop or Server]
- Browser (if running in server mode): [e.g. chrome, safari]
- Package type: [e.g. RPM, DEB, Python, Container, etc.]
+55
View File
@@ -0,0 +1,55 @@
version: 2
updates:
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
labels:
- "Dependencies"
commit-message:
prefix: "Docker dependency"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
labels:
- "Dependencies"
commit-message:
prefix: "Python dependency"
- package-ecosystem: "pip"
directory: "/tools"
schedule:
interval: "weekly"
labels:
- "Dependencies"
commit-message:
prefix: "Python dependency"
- package-ecosystem: "pip"
directory: "/web/regression"
schedule:
interval: "weekly"
labels:
- "Dependencies"
commit-message:
prefix: "Python dependency"
- package-ecosystem: "npm"
directory: "/runtime"
schedule:
interval: "weekly"
labels:
- "Dependencies"
commit-message:
prefix: "Javascript dependency"
- package-ecosystem: "npm"
directory: "/web"
schedule:
interval: "weekly"
labels:
- "Dependencies"
commit-message:
prefix: "Javascript dependency"
@@ -0,0 +1,28 @@
name: Check container build
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build-container:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Build the container
uses: docker/build-push-action@v6
with:
push: false
context: .
-39
View File
@@ -1,39 +0,0 @@
name: Check documentation build
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# Run the tests
- name: Install dependencies
run: sudo apt install build-essential python3-dev libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev
- name: Install requirements
run: pip install -r requirements.txt
- name: Install sphinx
run: pip install sphinx==6.1.1
- name: Install sphinx youtube
run: pip install sphinxcontrib-youtube
- name: Check the documentation
run: make docs
+61
View File
@@ -0,0 +1,61 @@
name: Check documentation builds
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build-docs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install platform dependencies
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev latexmk texlive-latex-recommended tex-gyre texlive-latex-extra
- name: Install Python dependencies
run: make install-python
- name: Check the HTML build
run: |
. venv/bin/activate
make docs
- name: Archive HTML
uses: actions/upload-artifact@v4
with:
name: pgadmin4-html-build-output
path: docs/en_US/_build/html/*
- name: Check the ePub build
run: |
. venv/bin/activate
make docs-epub
- name: Archive ePub
uses: actions/upload-artifact@v4
with:
name: pgadmin4-epub-build-output
path: docs/en_US/_build/epub/pgAdmin4.epub
- name: Check the PDF build
run: |
. venv/bin/activate
make docs-pdf
- name: Archive PDF
uses: actions/upload-artifact@v4
with:
name: pgadmin4-pdf-build-output
path: docs/en_US/_build/latex/pgadmin4.pdf
+18 -19
View File
@@ -1,36 +1,35 @@
name: Check Javascript style
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
check-javascript-style:
runs-on: ubuntu-22.04
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Upgrade yarn
run: |
yarn set version berry
yarn set version $(node -p "require('./web/package.json').packageManager.split('@')[1]")
# Run the tests
- name: Install nodejs
run: sudo apt install nodejs
- name: Install yarn
run: sudo npm install --global yarn
- name: Install Node modules
run: cd web && yarn install
run: |
cd web
yarn install
- name: Run the linter
run: cd web && yarn run linter
run: |
cd web
yarn run linter
+39
View File
@@ -0,0 +1,39 @@
name: Check Python build
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build-python-package:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install platform dependencies
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev
- name: Install Python dependencies
run: make install-python
- name: Check the Python wheel build
run: |
. venv/bin/activate
make pip
- name: Archive Python wheel
uses: actions/upload-artifact@v4
with:
name: pgadmin4-python-build-output
path: dist/*
+12 -14
View File
@@ -1,30 +1,28 @@
name: Check Python style
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
check-python-style:
runs-on: ubuntu-22.04
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- uses: actions/checkout@v4
# Run the tests
- name: Install pycodestyle
run: pip install pycodestyle
- name: Install Python dependencies
run: |
sudo pip install --upgrade pip
sudo pip install pycodestyle
- name: Check the documentation
run: pycodestyle --config=.pycodestyle docs/
@@ -36,4 +34,4 @@ jobs:
run: pycodestyle --config=.pycodestyle web/
- name: Check the tools
run: pycodestyle --config=.pycodestyle tools/
run: pycodestyle --config=.pycodestyle tools/
+39
View File
@@ -0,0 +1,39 @@
name: Check tarball build
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build-tarball:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install platform dependencies
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev
- name: Install Python dependencies
run: make install-python
- name: Check the tarball build
run: |
. venv/bin/activate
make src
- name: Archive source tarball
uses: actions/upload-artifact@v4
with:
name: pgadmin4-tarball-build-output
path: dist/*
+34
View File
@@ -0,0 +1,34 @@
name: Check translations
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
check-translations:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install platform dependencies
run: |
sudo apt update
sudo apt install -y python3-babel python3-jinja2
- name: Check we can extract messages
run: make msg-extract
- name: Check we can update the catalogs
run: make msg-update
- name: Check the catalogs will compile
run: make msg-compile
@@ -0,0 +1,183 @@
name: Run feature tests on EPAS
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
run-feature-tests-epas:
# Only run if the tests are enabled
# TODO: Figure out a way to test for the presence of the secrets instead
if: vars.ENABLE_EPAS_TESTS == 'true'
strategy:
fail-fast: false
matrix:
pgver: [14, 15, 16, 17, 18]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup the EDB APT repo on Linux
run: |
curl -1sLf 'https://downloads.enterprisedb.com/${{ secrets.CLOUDSMITH_TOKEN }}/enterprise/setup.deb.sh' | sudo -E bash
- name: Install platform dependencies
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev edb-as${{ matrix.pgver }}-server edb-as${{ matrix.pgver }}-server-pldebugger
- name: Install pgagent on Linux
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
run: |
sudo apt install -y edb-as${{ matrix.pgver }}-pgagent
- name: Create the tablespace directory
run: |
sudo mkdir -p /var/lib/edb-as/tablespaces/${{ matrix.pgver }}
sudo chown enterprisedb:enterprisedb /var/lib/edb-as/tablespaces/${{ matrix.pgver }}
- name: Start EDB PostgreSQL
run: |
# Note: we use a custom port for PostgreSQL as the runner may already have a version of PostgreSQL installed
sudo su -c "echo local all all trust > /etc/edb-as/${{ matrix.pgver }}/main/pg_hba.conf"
sudo sed -i "s/port = 544[0-9]/port = 58${{ matrix.pgver }}/g" /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf
sudo sed -i "s/shared_preload_libraries = '/shared_preload_libraries = '\$libdir\/plugin_debugger,/g" /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf
sudo su - enterprisedb -c "mkdir -p /var/run/edb-as/${{ matrix.pgver }}-main.epas_stat_tmp"
sudo systemctl restart edb-as@${{ matrix.pgver }}-main
until sudo runuser -l enterprisedb -c "/usr/lib/edb-as/${{ matrix.pgver }}/bin/pg_isready -p 58${{ matrix.pgver }}" 2>/dev/null; do
>&2 echo "EPAS is unavailable - sleeping for 2 seconds"
sleep 2
done
- name: Create pgagent extension on Linux
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
run: psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS pgagent;'
- name: Install Python dependencies
run: make install-python-testing
- name: Create the test configuration
run: |
cat <<EOF > web/config_local.py
from config import *
# Debug mode
DEBUG = True
# App mode
SERVER_MODE = False
# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = False
LOG_FILE = "$(pwd)/var/pgadmin4.log"
SESSION_DB_PATH = "$(pwd)/var/sessions"
STORAGE_DIR = "$(pwd)/var/storage"
SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache"
EOF
cat <<EOF > web/regression/test_config.json
{
"headless_chrome": false,
"default_browser": "Chrome",
"pgAdmin4_login_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"pgAdmin4_test_user_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER2@EXAMPLE.COM"
},
"pgAdmin4_test_non_admin_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"server_group": 1,
"server_credentials": [
{
"name": "EPAS ${{ matrix.pgver }}",
"comment": "EPAS ${{ matrix.pgver }} Server",
"db_username": "enterprisedb",
"host": "/var/run/edb-as",
"db_password": "",
"db_port": 58${{ matrix.pgver }},
"maintenance_db": "postgres",
"sslmode": "prefer",
"tablespace_path": "/var/lib/edb-as/tablespaces/${{ matrix.pgver }}",
"enabled": true,
"default_binary_paths": {
"pg": "",
"ppas": "/usr/lib/edb-as/${{ matrix.pgver }}/bin"
}
}
],
"server_update_data": [
{
"comment": "This is test update comment"
}
]
}
EOF
- name: Upgrade yarn
run: |
yarn set version berry
yarn set version $(node -p "require('./web/package.json').packageManager.split('@')[1]")
- name: Build the JS bundle
run: |
cd web
yarn install
yarn run bundle
- name: Run the tests
run: |
. venv/bin/activate
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
export DISPLAY=:99
cd web
python regression/runtests.py --pkg feature_tests
- name: Archive server log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: server-log-pg${{ matrix.pgver }}
path: var/pgadmin4.log
- name: Archive regression log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: regression-log-pg${{ matrix.pgver }}
path: web/regression/regression.log
- name: Archive screenshots
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: screenshots-pg${{ matrix.pgver }}
path: web/regression/screenshots
if-no-files-found: ignore
+193
View File
@@ -0,0 +1,193 @@
name: Run feature tests on PostgreSQL
# Note: we use a custom port for PostgreSQL as the runners may already have
# a version installed.
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
run-feature-tests-pg:
strategy:
fail-fast: false
matrix:
pgver: [14, 15, 16, 17, 18]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup the PGDG APT repo
run: |
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- name: Uninstall PostgreSQL if already present
run: |
if [ -n "$(ls /etc/postgresql/*/*/postgresql.conf 2>/dev/null)" ]; then
# Extract the major version from pg_config
installed_pg_version=$( pg_config --version | cut -d ' ' -f 2 | cut -d '.' -f 1 )
echo "Installed PostgreSQL version: $installed_pg_version"
if [ $installed_pg_version != ${{ matrix.pgver }} ]; then
sudo pg_dropcluster $installed_pg_version main --stop
sudo apt-get -y remove "postgresql-${installed_pg_version}"
fi
fi
- name: Install platform dependencies
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev postgresql-${{ matrix.pgver }} postgresql-${{ matrix.pgver }}-pldebugger pgagent
- name: Create the tablespace directory
run: |
sudo mkdir -p /var/lib/postgresql/tablespaces/${{ matrix.pgver }}
sudo chown postgres:postgres /var/lib/postgresql/tablespaces/${{ matrix.pgver }}
- name: Re-create stats directory, just in case
run: |
sudo rm -rf /var/run/postgresql/${{ matrix.pgver }}-main.pg_stat_tmp/
sudo mkdir -p /var/run/postgresql/${{ matrix.pgver }}-main.pg_stat_tmp/
sudo chown postgres:postgres /var/run/postgresql/${{ matrix.pgver }}-main.pg_stat_tmp/
- name: Start PostgreSQL
run: |
sudo su -c "echo local all all trust > /etc/postgresql/${{ matrix.pgver }}/main/pg_hba.conf"
sudo sed -i "s/port = 543[0-9]/port = 59${{ matrix.pgver }}/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf
sudo sed -i "s/#shared_preload_libraries = ''/shared_preload_libraries = '\$libdir\/plugin_debugger'/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf
sudo su - postgres -c "/usr/lib/postgresql/${{ matrix.pgver }}/bin/postgres -D /var/lib/postgresql/${{ matrix.pgver }}/main -c config_file=/etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf &"
until sudo runuser -l postgres -c "pg_isready -p 59${{ matrix.pgver }}" 2>/dev/null; do
>&2 echo "Postgres is unavailable - sleeping for 2 seconds"
sleep 2
done
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pgagent;'
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pldbgapi;'
- name: Install Python dependencies
run: make install-python-testing
- name: Create the test configuration
run: |
cat <<EOF > web/config_local.py
from config import *
# Debug mode
DEBUG = True
# App mode
SERVER_MODE = False
# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = False
LOG_FILE = "$(pwd)/var/pgadmin4.log"
SESSION_DB_PATH = "$(pwd)/var/sessions"
STORAGE_DIR = "$(pwd)/var/storage"
SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache"
EOF
cat <<EOF > web/regression/test_config.json
{
"headless_chrome": false,
"default_browser": "Chrome",
"pgAdmin4_login_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"pgAdmin4_test_user_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER2@EXAMPLE.COM"
},
"pgAdmin4_test_non_admin_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"server_group": 1,
"server_credentials": [
{
"name": "PostgreSQL ${{ matrix.pgver }}",
"comment": "PostgreSQL ${{ matrix.pgver }} Server",
"db_username": "postgres",
"host": "/var/run/postgresql",
"db_password": "",
"db_port": 59${{ matrix.pgver }},
"maintenance_db": "postgres",
"sslmode": "prefer",
"tablespace_path": "/var/lib/postgresql/tablespaces/${{ matrix.pgver }}",
"enabled": true,
"default_binary_paths": {
"pg": "/usr/lib/postgresql/${{ matrix.pgver }}/bin",
"ppas": ""
}
}
],
"server_update_data": [
{
"comment": "This is test update comment"
}
]
}
EOF
- name: Upgrade yarn
run: |
yarn set version berry
yarn set version $(node -p "require('./web/package.json').packageManager.split('@')[1]")
- name: Build the JS bundle
run: |
cd web
yarn install
yarn run bundle
- name: Run the tests
run: |
. venv/bin/activate
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
export DISPLAY=:99
cd web
python regression/runtests.py --pkg feature_tests
- name: Archive server log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: server-log-pg${{ matrix.pgver }}
path: var/pgadmin4.log
- name: Archive regression log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: regression-log-pg${{ matrix.pgver }}
path: web/regression/regression.log
- name: Archive screenshots
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: screenshots-pg${{ matrix.pgver }}
path: web/regression/screenshots
if-no-files-found: ignore
@@ -0,0 +1,44 @@
name: Run Javascript tests
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
run-javascript-tests:
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-22.04, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/setup-node@v4
with:
node-version: '20.x'
- uses: actions/checkout@v4
- name: Upgrade yarn
run: |
yarn set version berry
yarn set version $(node -p "require('./web/package.json').packageManager.split('@')[1]")
- name: Install Node modules
run: |
cd web
yarn install
- name: Run the tests
run: |
cd web
yarn run test:js-once
+324
View File
@@ -0,0 +1,324 @@
# This workflow requires the following configuration in Github
#
# Vars:
# ENABLE_EPAS_TESTS - Set to true to enable this test
#
# Secrets:
# EDB_REPO_USERNAME - Username for accessing EDB Repos 1.0
# EDB_REPO_PASSWORD - Password for accessing EDB Repos 1.0
# EDB_SBP_URL - URL to the EDB StackBuilder Plus catalog
name: Run Python tests on EPAS
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
run-python-tests-epas:
# Only run if the tests are enabled
# TODO: Figure out a way to test for the presence of the secrets instead
if: vars.ENABLE_EPAS_TESTS == 'true'
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-latest]
pgver: [14, 15, 16, 17, 18]
postgisver: [34]
exclude:
- pgver: 18
postgisver: 34
include:
- os: ubuntu-22.04
pgver: 18
postgisver: 36
- os: windows-latest
pgver: 18
postgisver: 36
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Update python version
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Setup the EDB APT repo on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
curl -1sLf 'https://downloads.enterprisedb.com/${{ secrets.CLOUDSMITH_TOKEN }}/enterprise/setup.deb.sh' | sudo -E bash
- name: Install platform dependencies on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev edb-as${{ matrix.pgver }}-server edb-as${{ matrix.pgver }}-server-pldebugger edb-as${{ matrix.pgver }}-postgis${{ matrix.postgisver }}
- name: Install pgagent on Linux
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
run: |
sudo apt install -y edb-as${{ matrix.pgver }}-pgagent
- name: Install platform dependencies on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
FOR /f "delims=" %%F IN ('python tools\get_sb_package.py "${{ secrets.EDB_SBP_URL }}" "edb_as${{ matrix.pgver }}_dbserver" "windows-x64"') DO SET INSTALLER_EXE=%%F
ECHO Running %INSTALLER_EXE%...
%INSTALLER_EXE% --prefix C:\EPAS\${{ matrix.pgver }} --datadir C:\EPAS\${{ matrix.pgver }}\data --serverport 58${{ matrix.pgver }} --superpassword enterprisedb --create_samples no --install_runtimes 0 --mode unattended --unattendedmodeui none --disable-components stackbuilderplus${{ matrix.pgver < 15 && ',pgadmin4' || '' }}
choco install -y mitkerberos
REM Ignore error 3010 (reboot required)
IF %ERRORLEVEL% EQU 3010 cmd /c "exit /b 0"
shell: cmd
- name: Add pg_config path to PATH
shell: pwsh
run: |
$pgPath = "C:\\EPAS\\${{ matrix.pgver }}\\bin"
Write-Output $pgPath
Add-Content -Path $env:GITHUB_PATH -Value $pgPath
pg_config --version
- name: Create the tablespace directory on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
sudo mkdir -p /var/lib/edb-as/tablespaces/${{ matrix.pgver }}
sudo chown enterprisedb:enterprisedb /var/lib/edb-as/tablespaces/${{ matrix.pgver }}
- name: Create the tablespace directory on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
mkdir "C:\EPAS\${{ matrix.pgver }}\tablespaces"
icacls "C:\EPAS\${{ matrix.pgver }}\tablespaces" /grant "NETWORK SERVICE":(OI)(CI)F /T
shell: cmd
- name: Add edb_job_scheduler into config file.
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver >= 16 }}
run: |
sudo sed -i "s/shared_preload_libraries = '/shared_preload_libraries = '\$libdir\/edb_job_scheduler,/g" /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf
sudo su -c "echo \"edb_job_scheduler.database_list = 'test_dbms_job_scheduler'\" >> /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf"
- name: Start PostgreSQL on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
# Note: we use a custom port for PostgreSQL as the runner may already have a version of PostgreSQL installed
sudo su -c "echo local all all trust > /etc/edb-as/${{ matrix.pgver }}/main/pg_hba.conf"
sudo sed -i "s/port = 544[0-9]/port = 58${{ matrix.pgver }}/g" /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf
sudo sed -i "s/shared_preload_libraries = '/shared_preload_libraries = '\$libdir\/plugin_debugger,/g" /etc/edb-as/${{ matrix.pgver }}/main/postgresql.conf
sudo su - enterprisedb -c "mkdir -p /var/run/edb-as/${{ matrix.pgver }}-main.epas_stat_tmp"
sudo systemctl restart edb-as@${{ matrix.pgver }}-main
until sudo runuser -l enterprisedb -c "/usr/lib/edb-as/${{ matrix.pgver }}/bin/pg_isready -p 58${{ matrix.pgver }}" 2>/dev/null; do
>&2 echo "EPAS is unavailable - sleeping for 2 seconds"
sleep 2
done
- name: Create pgagent extension on Linux
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.pgver <= 16 }}
run: psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS pgagent;'
- name: Create postgis extension on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: psql -U enterprisedb -d postgres -p 58${{ matrix.pgver }} -c 'CREATE EXTENSION IF NOT EXISTS postgis;'
- name: Install Python dependencies on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: make install-python-testing
- name: Install Python dependencies on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
SET LIB=C:\EPAS\${{ matrix.pgver }}\lib;%LIB%
SET INCLUDE=C:\EPAS\${{ matrix.pgver }}\include;%INCLUDE%
python -m venv venv
call venv\Scripts\activate.bat
python -m pip install --upgrade pip
pip install wheel sphinx sphinxcontrib-youtube -r web\regression\requirements.txt
shell: cmd
- name: Create the test configuration on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
cat <<EOF > web/config_local.py
from config import *
# Debug mode
DEBUG = True
# App mode
SERVER_MODE = False
# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = False
LOG_FILE = "$(pwd)/var/pgadmin4.log"
SESSION_DB_PATH = "$(pwd)/var/sessions"
STORAGE_DIR = "$(pwd)/var/storage"
SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache"
EOF
cat <<EOF > web/regression/test_config.json
{
"pgAdmin4_login_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"pgAdmin4_test_user_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER2@EXAMPLE.COM"
},
"pgAdmin4_test_non_admin_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"server_group": 1,
"server_credentials": [
{
"name": "EPAS ${{ matrix.pgver }}",
"comment": "EPAS ${{ matrix.pgver }} Server",
"db_username": "enterprisedb",
"host": "/var/run/edb-as",
"db_password": "",
"db_port": 58${{ matrix.pgver }},
"maintenance_db": "postgres",
"sslmode": "prefer",
"tablespace_path": "/var/lib/edb-as/tablespaces/${{ matrix.pgver }}",
"enabled": true,
"default_binary_paths": {
"pg": "",
"ppas": "/usr/lib/edb-as/${{ matrix.pgver }}/bin"
}
}
],
"server_update_data": [
{
"comment": "This is test update comment"
}
]
}
EOF
- name: Create the test configuration on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
FOR /f "delims=" %%D IN ('python -c "import os; print(os.getcwd().replace('\\', '\\\\'))"') DO SET WORKING_DIR=%%D
> web\config_local.py (
@echo.from config import *
@echo.
@echo.# Debug mode
@echo.DEBUG = True
@echo.
@echo.# App mode
@echo.SERVER_MODE = False
@echo.
@echo.# Log
@echo.CONSOLE_LOG_LEVEL = DEBUG
@echo.FILE_LOG_LEVEL = DEBUG
@echo.
@echo.DEFAULT_SERVER = '127.0.0.1'
@echo.
@echo.UPGRADE_CHECK_ENABLED = False
@echo.
@echo.LOG_FILE = "%WORKING_DIR%\\var\\pgadmin4.log"
@echo.SESSION_DB_PATH = "%WORKING_DIR%\\var\\sessions"
@echo.STORAGE_DIR = "%WORKING_DIR%\\var\\storage"
@echo.SQLITE_PATH = "%WORKING_DIR%\\var\\pgadmin4.db"
@echo.TEST_SQLITE_PATH = "%WORKING_DIR%\\var\\test_pgadmin4.db"
@echo.AZURE_CREDENTIAL_CACHE_DIR = "%WORKING_DIR%\\var\\azurecredentialcache"
)
> web\regression\test_config.json (
@echo.{
@echo. "pgAdmin4_login_credentials": {
@echo. "new_password": "NEWPASSWORD",
@echo. "login_password": "PASSWORD",
@echo. "login_username": "USER@EXAMPLE.COM"
@echo. },
@echo. "pgAdmin4_test_user_credentials": {
@echo. "new_password": "NEWPASSWORD",
@echo. "login_password": "PASSWORD",
@echo. "login_username": "USER2@EXAMPLE.COM"
@echo. },
@echo. "pgAdmin4_test_non_admin_credentials": {
@echo. "new_password": "NEWPASSWORD",
@echo. "login_password": "PASSWORD",
@echo. "login_username": "USER@EXAMPLE.COM"
@echo. },
@echo. "server_group": 1,
@echo. "server_credentials": [
@echo. {
@echo. "name": "EPAS ${{ matrix.pgver }}",
@echo. "comment": "EPAS ${{ matrix.pgver }} Server",
@echo. "db_username": "enterprisedb",
@echo. "host": "127.0.0.1",
@echo. "db_password": "enterprisedb",
@echo. "db_port": 58${{ matrix.pgver }},
@echo. "maintenance_db": "postgres",
@echo. "sslmode": "prefer",
@echo. "tablespace_path": "C:\\EPAS\\${{ matrix.pgver }}\\tablespaces",
@echo. "enabled": true,
@echo. "default_binary_paths": {
@echo. "pg": "",
@echo. "ppas": "C:\\EPAS\\${{ matrix.pgver }}\\bin"
@echo. }
@echo. }
@echo. ],
@echo. "server_update_data": [
@echo. {
@echo. "comment": "This is test update comment"
@echo. }
@echo. ]
@echo.}
)
shell: cmd
- name: Run the tests on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
. venv/bin/activate
make check-python
- name: Run the tests on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
call venv\Scripts\activate.bat
python web\regression\runtests.py --exclude feature_tests
shell: cmd
- name: Archive server log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: server-log-epas-${{ matrix.os }}-pg${{ matrix.pgver }}
path: var/pgadmin4.log
- name: Archive regression log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: regression-log-epas-${{ matrix.os }}-pg${{ matrix.pgver }}
path: web/regression/regression.log
+335
View File
@@ -0,0 +1,335 @@
name: Run Python tests on PostgreSQL
# Note: we use a custom port (and installation directory on Windows) for
# PostgreSQL as the runners may already have a version installed.
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
run-python-tests-pg:
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-22.04, windows-latest]
pgver: [14, 15, 16, 17, 18]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Update python version
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Setup the PGDG APT repo on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- name: Uninstall PostgreSQL if already present on linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
if [ -n "$(ls /etc/postgresql/*/*/postgresql.conf 2>/dev/null)" ]; then
# Extract the major version from pg_config
installed_pg_version=$( pg_config --version | cut -d ' ' -f 2 | cut -d '.' -f 1 )
echo "Installed PostgreSQL version: $installed_pg_version"
if [ $installed_pg_version != ${{ matrix.pgver }} ]; then
sudo pg_dropcluster $installed_pg_version main --stop
sudo apt-get -y remove "postgresql-${installed_pg_version}"
fi
fi
- name: Install platform dependencies on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev postgresql-${{ matrix.pgver }} postgresql-${{ matrix.pgver }}-pldebugger pgagent postgresql-${{ matrix.pgver }}-postgis-3
- name: Install platform dependencies on macOS
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install postgresql@${{ matrix.pgver }}
echo "/opt/homebrew/opt/postgresql@${{ matrix.pgver }}/bin" >> $GITHUB_PATH
- name: Uninstall PostgreSQL if already present on windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
if exist "C:\Program Files\PostgreSQL\{{ matrix.pgver }}\uninstall-postgresql.exe" (
"C:\Program Files\PostgreSQL\{{ matrix.pgver }}\uninstall-postgresql.exe" --mode unattended
)
reg delete "HKLM\SOFTWARE\PostgreSQL" /f
shell: cmd
- name: Install platform dependencies on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
FOR /f "delims=" %%F IN ('python tools\get_sb_package.py "https://www.postgresql.org/applications-v2.xml" "postgresql_${{ matrix.pgver }}" "windows-x64"') DO SET INSTALLER_EXE=%%F
ECHO Running %INSTALLER_EXE%...
%INSTALLER_EXE% --prefix C:\PostgreSQL_custom\${{ matrix.pgver }} --datadir C:\PostgreSQL_custom\${{ matrix.pgver }}\data --serverport 59${{ matrix.pgver }} --superpassword postgres --install_runtimes 0 --mode unattended --unattendedmodeui none --disable-components pgAdmin,stackbuilder --enable-components server,commandlinetools"
choco install -y mitkerberos
REM Ignore error 3010 (reboot required)
IF %ERRORLEVEL% EQU 3010 cmd /c "exit /b 0"
shell: cmd
- name: Add pg_config path to PATH
shell: pwsh
run: |
$pgPath = "C:\\PostgreSQL_custom\\${{ matrix.pgver }}\\bin"
Write-Output $pgPath
Add-Content -Path $env:GITHUB_PATH -Value $pgPath
pg_config --version
- name: Create the tablespace directory on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
sudo mkdir -p /var/lib/postgresql/tablespaces/${{ matrix.pgver }}
sudo chown postgres:postgres /var/lib/postgresql/tablespaces/${{ matrix.pgver }}
- name: Create the tablespace directory on macOS
if: ${{ matrix.os == 'macos-latest' }}
run: |
mkdir -p /opt/homebrew/var/tablespaces/${{ matrix.pgver }}
- name: Create the tablespace directory on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
mkdir "C:\PostgreSQL\${{ matrix.pgver }}\tablespaces"
icacls "C:\PostgreSQL\${{ matrix.pgver }}\tablespaces" /grant "NETWORK SERVICE":(OI)(CI)F /T
shell: cmd
- name: Start PostgreSQL on Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
sudo su -c "echo local all all trust > /etc/postgresql/${{ matrix.pgver }}/main/pg_hba.conf"
sudo sed -i "s/port = 543[0-9]/port = 59${{ matrix.pgver }}/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf
sudo sed -i "s/#shared_preload_libraries = ''/shared_preload_libraries = '\$libdir\/plugin_debugger'/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf
sudo su - postgres -c "/usr/lib/postgresql/${{ matrix.pgver }}/bin/postgres -D /var/lib/postgresql/${{ matrix.pgver }}/main -c config_file=/etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf &"
until sudo runuser -l postgres -c "pg_isready -p 59${{ matrix.pgver }}" 2>/dev/null; do
>&2 echo "Postgres is unavailable - sleeping for 2 seconds"
sleep 2
done
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pgagent;'
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pldbgapi;'
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION postgis;'
- name: Start PostgreSQL on macOS
if: ${{ matrix.os == 'macos-latest' }}
run: |
echo local all all trust > /opt/homebrew/var/postgresql@${{ matrix.pgver }}/pg_hba.conf
sed -i '' "s/#port = 543[0-9]/port = 59${{ matrix.pgver }}/g" /opt/homebrew/var/postgresql@${{ matrix.pgver }}/postgresql.conf
brew services restart postgresql@${{ matrix.pgver }}
until /opt/homebrew/opt/postgresql@${{ matrix.pgver }}/bin/pg_isready -p 59${{ matrix.pgver }} 2>/dev/null; do
>&2 echo "Postgres is unavailable - sleeping for 2 seconds"
sleep 2
done
psql postgres -p 59${{ matrix.pgver }} -c 'CREATE ROLE postgres SUPERUSER LOGIN;'
- name: Install Python dependencies on Linux and macOS
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' }}
run: make install-python-testing
- name: Install Python dependencies on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
SET LIB=C:\PostgreSQL\${{ matrix.pgver }}\lib;%LIB%
SET INCLUDE=C:\PostgreSQL\${{ matrix.pgver }}\include;%INCLUDE%
python -m venv venv
call venv\Scripts\activate.bat
python -m pip install --upgrade pip
pip install wheel sphinx sphinxcontrib-youtube -r web\regression\requirements.txt
shell: cmd
- name: Create the test configuration on Linux and macOS
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' }}
run: |
cat <<EOF > web/config_local.py
from config import *
# Debug mode
DEBUG = True
# App mode
SERVER_MODE = False
# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = False
LOG_FILE = "$(pwd)/var/pgadmin4.log"
SESSION_DB_PATH = "$(pwd)/var/sessions"
STORAGE_DIR = "$(pwd)/var/storage"
SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache"
EOF
cat <<EOF > web/regression/test_config.json
{
"pgAdmin4_login_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"pgAdmin4_test_user_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER2@EXAMPLE.COM"
},
"pgAdmin4_test_non_admin_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"server_group": 1,
"server_credentials": [
{
"name": "PostgreSQL ${{ matrix.pgver }}",
"comment": "PostgreSQL ${{ matrix.pgver }} Server",
"db_username": "postgres",
"host": "${{ matrix.os == 'macos-latest' && '/tmp' || matrix.os == 'ubuntu-22.04' && '/var/run/postgresql' || '127.0.0.1' }}",
"db_password": "postgres",
"db_port": 59${{ matrix.pgver }},
"maintenance_db": "postgres",
"sslmode": "prefer",
"tablespace_path": "${{ matrix.os == 'macos-latest' && format('/opt/homebrew/var/tablespaces/{0}', matrix.pgver) || format('/var/lib/postgresql/tablespaces/{0}', matrix.pgver) }}",
"enabled": true,
"default_binary_paths": {
"pg": "${{ matrix.os == 'macos-latest' && format('/opt/homebrew/opt/postgresql@{0}/bin', matrix.pgver) || format('/usr/lib/postgresql/{0}/bin', matrix.pgver) }}",
"ppas": ""
}
}
],
"server_update_data": [
{
"comment": "This is test update comment"
}
]
}
EOF
- name: Create the test configuration on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
FOR /f "delims=" %%D IN ('python -c "import os; print(os.getcwd().replace('\\', '\\\\'))"') DO SET WORKING_DIR=%%D
> web\config_local.py (
@echo.from config import *
@echo.
@echo.# Debug mode
@echo.DEBUG = True
@echo.
@echo.# App mode
@echo.SERVER_MODE = False
@echo.
@echo.# Log
@echo.CONSOLE_LOG_LEVEL = DEBUG
@echo.FILE_LOG_LEVEL = DEBUG
@echo.
@echo.DEFAULT_SERVER = '127.0.0.1'
@echo.
@echo.UPGRADE_CHECK_ENABLED = False
@echo.
@echo.LOG_FILE = "%WORKING_DIR%\\var\\pgadmin4.log"
@echo.SESSION_DB_PATH = "%WORKING_DIR%\\var\\sessions"
@echo.STORAGE_DIR = "%WORKING_DIR%\\var\\storage"
@echo.SQLITE_PATH = "%WORKING_DIR%\\var\\pgadmin4.db"
@echo.TEST_SQLITE_PATH = "%WORKING_DIR%\\var\\test_pgadmin4.db"
@echo.AZURE_CREDENTIAL_CACHE_DIR = "%WORKING_DIR%\\var\\azurecredentialcache"
)
> web\regression\test_config.json (
@echo.{
@echo. "pgAdmin4_login_credentials": {
@echo. "new_password": "NEWPASSWORD",
@echo. "login_password": "PASSWORD",
@echo. "login_username": "USER@EXAMPLE.COM"
@echo. },
@echo. "pgAdmin4_test_user_credentials": {
@echo. "new_password": "NEWPASSWORD",
@echo. "login_password": "PASSWORD",
@echo. "login_username": "USER2@EXAMPLE.COM"
@echo. },
@echo. "pgAdmin4_test_non_admin_credentials": {
@echo. "new_password": "NEWPASSWORD",
@echo. "login_password": "PASSWORD",
@echo. "login_username": "USER@EXAMPLE.COM"
@echo. },
@echo. "server_group": 1,
@echo. "server_credentials": [
@echo. {
@echo. "name": "PostgreSQL ${{ matrix.pgver }}",
@echo. "comment": "PostgreSQL ${{ matrix.pgver }} Server",
@echo. "db_username": "postgres",
@echo. "host": "127.0.0.1",
@echo. "db_password": "postgres",
@echo. "db_port": 59${{ matrix.pgver }},
@echo. "maintenance_db": "postgres",
@echo. "sslmode": "prefer",
@echo. "tablespace_path": "C:\\PostgreSQL\\${{ matrix.pgver }}\\tablespaces",
@echo. "enabled": true,
@echo. "default_binary_paths": {
@echo. "pg": "C:\\PostgreSQL\\${{ matrix.pgver }}\\bin",
@echo. "ppas": ""
@echo. }
@echo. }
@echo. ],
@echo. "server_update_data": [
@echo. {
@echo. "comment": "This is test update comment"
@echo. }
@echo. ]
@echo.}
)
shell: cmd
- name: Run the tests on Linux and macOS
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'ubuntu-22.04' }}
run: |
. venv/bin/activate
make check-python
- name: Run the tests on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
call venv\Scripts\activate.bat
python web\regression\runtests.py --exclude feature_tests
shell: cmd
- name: Archive server log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: server-log-${{ matrix.os }}-pg${{ matrix.pgver }}
path: var/pgadmin4.log
- name: Archive regression log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: regression-log-${{ matrix.os }}-pg${{ matrix.pgver }}
path: web/regression/regression.log
@@ -0,0 +1,204 @@
name: Run Python tests in server mode (data isolation)
# This workflow runs the data-isolation tests with SERVER_MODE=True.
# The main run-python-tests-pg.yml workflow runs everything with
# SERVER_MODE=False, so any test that gates itself on `config.SERVER_MODE`
# (notably web/pgadmin/browser/server_groups/tests/test_sg_data_isolation.py
# and web/pgadmin/browser/server_groups/servers/tests/test_server_data_isolation.py)
# skips itself in CI. That gap allowed the admin-bypass regression in
# 9a76ed8 to ship; this workflow exists so regressions to the centralized
# access-control helpers in web/pgadmin/utils/server_access.py are caught.
#
# Scope is intentionally narrow: one OS, one PG version, only the
# data-isolation modules. Keep it cheap to run on every PR.
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
run-python-tests-server-mode:
runs-on: ubuntu-24.04
env:
PG_VER: 18
steps:
- uses: actions/checkout@v4
with:
# We don't run any authenticated git operations after checkout
# (no push, no submodule fetch, no comment back to the PR), so
# persisting the token in the local git config only widens the
# blast radius of an unrelated step compromise.
persist-credentials: false
- name: Update python version
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Setup the PGDG APT repo
# apt-key is deprecated on Ubuntu 24.04+; install the key into
# /etc/apt/keyrings/ and reference it via signed-by= in the
# sources.list entry instead.
run: |
sudo install -d -m 0755 /etc/apt/keyrings
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc \
| sudo gpg --dearmor -o /etc/apt/keyrings/pgdg.gpg
sudo sh -c 'echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
- name: Uninstall PostgreSQL if already present
run: |
if [ -n "$(ls /etc/postgresql/*/*/postgresql.conf 2>/dev/null)" ]; then
installed_pg_version=$( pg_config --version | cut -d ' ' -f 2 | cut -d '.' -f 1 )
echo "Installed PostgreSQL version: $installed_pg_version"
if [ $installed_pg_version != ${PG_VER} ]; then
sudo pg_dropcluster $installed_pg_version main --stop
sudo apt-get -y remove "postgresql-${installed_pg_version}"
fi
fi
- name: Install platform dependencies
run: |
sudo apt update
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev postgresql-${PG_VER}
- name: Start PostgreSQL
run: |
sudo su -c "echo local all all trust > /etc/postgresql/${PG_VER}/main/pg_hba.conf"
sudo sed -i "s/port = 543[0-9]/port = 59${PG_VER}/g" /etc/postgresql/${PG_VER}/main/postgresql.conf
sudo su - postgres -c "/usr/lib/postgresql/${PG_VER}/bin/postgres -D /var/lib/postgresql/${PG_VER}/main -c config_file=/etc/postgresql/${PG_VER}/main/postgresql.conf &"
# Bounded readiness wait: 60 attempts × 2s = 120s cap. If PG
# never becomes ready, fail fast with logs rather than hanging
# until the job timeout.
for attempt in $(seq 1 60); do
if sudo runuser -l postgres -c "pg_isready -p 59${PG_VER}" 2>/dev/null; then
break
fi
>&2 echo "Postgres is unavailable (attempt ${attempt}/60) - sleeping for 2 seconds"
sleep 2
if [ "$attempt" -eq 60 ]; then
>&2 echo "Postgres failed to become ready within 120 seconds"
sudo tail -n 200 /var/log/postgresql/postgresql-${PG_VER}-main.log || true
exit 1
fi
done
- name: Install Python dependencies
run: make install-python-testing
- name: Create the test configuration (SERVER_MODE=True)
run: |
mkdir -p var
cat <<EOF > web/config_local.py
from config import *
# Debug mode
DEBUG = True
# App mode — this is the whole point of this workflow.
SERVER_MODE = True
# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = False
LOG_FILE = "$(pwd)/var/pgadmin4.log"
SESSION_DB_PATH = "$(pwd)/var/sessions"
STORAGE_DIR = "$(pwd)/var/storage"
SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db"
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache"
EOF
cat <<EOF > web/regression/test_config.json
{
"pgAdmin4_login_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER@EXAMPLE.COM"
},
"pgAdmin4_test_user_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER2@EXAMPLE.COM"
},
"pgAdmin4_test_non_admin_credentials": {
"new_password": "NEWPASSWORD",
"login_password": "PASSWORD",
"login_username": "USER3@EXAMPLE.COM"
},
"server_group": 1,
"server_credentials": [
{
"name": "PostgreSQL ${{ env.PG_VER }}",
"comment": "PostgreSQL ${{ env.PG_VER }} Server",
"db_username": "postgres",
"host": "/var/run/postgresql",
"db_password": "postgres",
"db_port": 59${{ env.PG_VER }},
"maintenance_db": "postgres",
"sslmode": "prefer",
"tablespace_path": "/var/lib/postgresql/tablespaces/${{ env.PG_VER }}",
"enabled": true,
"default_binary_paths": {
"pg": "/usr/lib/postgresql/${{ env.PG_VER }}/bin",
"ppas": ""
}
}
],
"server_update_data": [
{
"comment": "This is test update comment"
}
]
}
EOF
- name: Run server-group data isolation tests
run: |
. venv/bin/activate
python web/regression/runtests.py --pkg browser.server_groups.tests --modules test_sg_data_isolation
- name: Run server data isolation tests
run: |
. venv/bin/activate
python web/regression/runtests.py --pkg browser.server_groups.servers.tests --modules test_server_data_isolation
- name: Run SQL Editor unauth-pickle regression test
# Regression guard for the CSRF-only-no-auth chain on
# /sqleditor/close and /sqleditor/.../update_connection: both
# endpoints reach pickle.loads via close_sqleditor_session() /
# check_transaction_status(), so they must require an
# authenticated session. This test is a no-op in DESKTOP mode
# (auto-re-authentication) so it can only run here.
run: |
. venv/bin/activate
python web/regression/runtests.py --pkg tools.sqleditor --modules test_close_requires_auth
- name: Archive server log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: server-log-server-mode
path: var/pgadmin4.log
- name: Archive regression log
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: regression-log-server-mode
path: web/regression/regression.log
+58
View File
@@ -0,0 +1,58 @@
# This workflow requires the following configuration in Github
#
# Variables:
# SONARQUBE_PROJECT_KEY - The project key in SonarQube
#
# Secrets:
# SONARQUBE_TOKEN - SonarQube API token
# SONARQUBE_HOST - The URL of the SonarQube host
name: SonarQube scan
on:
push:
branches: [ "master" ]
concurrency:
group: sonarqube
cancel-in-progress: false
jobs:
run-sonarqube-scan:
# Only run if the project key is set
if: vars.SONARQUBE_PROJECT_KEY != null
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Create the scan properties file
run: |
cat <<EOF > sonar-project.properties
sonar.projectKey=${{ vars.SONARQUBE_PROJECT_KEY }}
sonar.projectName=pgAdmin 4
sonar.projectVersion=%VERSION%
# Ignore templates and SQL scripts as they confuse the scanner
sonar.exclusions=**/templates/**/*, **/*.sql
# Let SonarQube know where tests can be found
sonar.test.inclusions=**/tests/**, web/regression
# Python compatibility
sonar.python.version=3.7, 3.8, 3.9, 3.10, 3.11
EOF
APP_RELEASE=`grep "^APP_RELEASE" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_REVISION=`grep "^APP_REVISION" web/config.py | cut -d"=" -f2 | sed 's/ //g'`
APP_LONG_VERSION=${APP_RELEASE}.${APP_REVISION}
sed -i "s/%VERSION%/${APP_LONG_VERSION}/g" sonar-project.properties
- name: SonarQube Scan
uses: sonarsource/sonarqube-scan-action@22918119ff8e1ca75a623e15c8296b6ea4fbe28f # v8.2.1
env:
SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONARQUBE_HOST }}
+5
View File
@@ -9,6 +9,8 @@
.DS_Store
.idea
.vscode
.sonarlint
.yarn
/*.diff
/*.patch
/dist
@@ -37,6 +39,7 @@ runtime/pgAdmin4.app/
runtime/pgAdmin4.pro.user*
runtime/pgAdmin4_resource.rc
runtime/release/
runtime/dev_config.json
runtime/ui_BrowserWindow.h
web/config_local.py
web/pgadmin/misc/themes/pgadmin.themes.json
@@ -47,6 +50,7 @@ node_modules/
web/pgAdmin/static/js/generated
web/pgadmin/static/js/generated
web/yarn-error.log
web/commit_hash
/web/cacert.pem
auditjs.html
auditpy.txt
@@ -55,5 +59,6 @@ auditpy.txt
web/coverage/
web/.coverage
web/regression/.coverage
.worktree/
web/regression/covhtml/
web/regression/htmlcov/
+2 -2
View File
@@ -1,9 +1,9 @@
[pycodestyle]
ignore = E402,W504,W605
ignore = E402,W504,E231
max-line-length = 79
statistics = True
show-source = False
show-pep8 = False
count = True
format = pylint
exclude = migrations,node_modules,config_local.py,config_distro.py
exclude = node_modules,config_local.py,config_distro.py
+341
View File
@@ -0,0 +1,341 @@
# Contributing to pgAdmin 4
Thank you for your interest in contributing to pgAdmin 4.
## Contents
- Getting Started
- Reporting Issues
- Making Changes
- Pull Requests
- AI-assisted Contributions
- Development Setup
- Database Migrations
- Security Issues
- Community and Support
- License
## Getting Started
Before starting work, please review the project documentation and familiarize yourself with the architecture and development workflow.
### Architecture
pgAdmin 4 is written as a web application with Python (Flask) on the server side and ReactJS, HTML5 with CSS for the client side processing and UI.
Although developed using web technologies, pgAdmin 4 can be deployed either on a web server using a browser, or standalone on a workstation. The [runtime/](runtime/) subdirectory contains an Electron-based runtime application intended to allow this, which will fork a Python server process and display the UI.
For a fuller introduction to the codebase, see the [code overview](docs/en_US/code_overview.rst).
If you are new to the codebase, consider starting with smaller bug fixes or documentation improvements before working on larger changes.
The Sphinx documentation also includes contributor guidance for [coding standards](docs/en_US/coding_standards.rst), [submitting pull requests](docs/en_US/submitting_pull_requests.rst), [code review](docs/en_US/code_review.rst), and [translations](docs/en_US/translations.rst).
## Reporting Issues
When reporting a bug:
- Search existing issues first.
- If a similar issue exists, add any additional information or context you have. Do not create a duplicate issue.
- Provide clear steps to reproduce the issue.
- Include relevant environment and version information.
- Attach screenshots, logs, or error messages when appropriate.
For feature requests, describe the problem being solved and the expected behavior.
## Making Changes
When working on a contribution:
- Keep changes focused and easy to review.
- Follow existing coding patterns and conventions, including the [coding standards](docs/en_US/coding_standards.rst).
- Avoid unrelated refactoring and changes in the same commit.
- Keep commit messages clear and descriptive.
- Update tests or documentation when necessary.
## Pull Requests
Before opening a pull request:
- Ensure your changes build successfully.
- Test your changes locally.
- Review your code before submission.
- Update your branch with the latest changes from `master` upstream when appropriate.
When opening a pull request:
- Clearly describe the change.
- Explain the reason for the change.
- Include screenshots or recordings for UI-related changes when applicable.
- Submit any changes as Pull Requests against the `master` branch of the [pgadmin-org/pgadmin4](https://github.com/pgadmin-org/pgadmin4) repository.
Use a clear pull request title that describes the change. Short prefixes such as `feat:`, `fix:`, `docs:`, `test:`, `refactor:`, and `chore:` are useful when they match the change being made. Branch names are contributor-local and do not need to follow a project-specific naming convention.
For more detail, see the [pull request submission guide](docs/en_US/submitting_pull_requests.rst) and [code review guide](docs/en_US/code_review.rst).
## AI-assisted Contributions
Contributors are responsible for understanding, testing, and standing behind everything they submit, whether or not AI tools were used. Please do not open large numbers of auto-generated issues or pull requests without first discussing that work with the maintainers.
## Development Setup
In the following documentation and examples, `$PGADMIN4_SRC` is used to denote the top-level directory of your copy of the pgAdmin source tree (either from a tarball or a git checkout).
### Prerequisites
1. Install Node.js 20 and above (https://nodejs.org/en/download)
2. yarn (https://yarnpkg.com/getting-started/install)
3. Python 3.9 and above (https://www.python.org/downloads/)
4. PostgreSQL server (https://www.postgresql.org/download)
Start by enabling Corepack, if it isn't already; this will add the yarn binary to your PATH:
```bash
corepack enable
```
### Building Web Assets
pgAdmin is dependent on a number of third-party JavaScript libraries. These, along with its own JavaScript code, CSS code and images must be compiled into a "bundle" which is transferred to the browser for execution and rendering. This is far more efficient than simply requesting each asset as it is needed by the client.
To create the bundle, you will need the 'yarn' package management tool to be installed. Then, you can run the following commands on a *nix system to download the required packages and build the bundle:
```bash
$ cd $PGADMIN4_SRC
$ make install-node
$ make bundle
```
On Windows systems (where "make" is not available), the following commands can be used:
```bat
C:\> cd $PGADMIN4_SRC\web
C:\$PGADMIN4_SRC\web> yarn install
C:\$PGADMIN4_SRC\web> yarn run bundle
```
### Python Environment
In order to run the Python code, a suitable runtime environment is required. Python version 3.9 and later are currently supported. It is recommended that a Python virtual environment is set up for this purpose, rather than using the system Python environment. On Linux and Mac systems, the process is fairly simple - adapt as required for your distribution:
1. Create a virtual environment in an appropriate directory. The last argument is the name of the environment; that can be changed as desired:
```bash
$ python3 -m venv venv
```
2. Now activate the virtual environment:
```bash
$ source venv/bin/activate
```
On Windows:
```bash
venv\Scripts\activate
```
3. Some of the components used by pgAdmin require a very recent version of *pip*, so update that to the latest:
```bash
(venv) $ pip install --upgrade pip
```
4. Ensure that a PostgreSQL installation's bin/ directory is in the path (so pg_config can be found for building psycopg3), and install the required packages:
```bash
(venv) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
```
If you are planning to run the regression tests, you also need to install additional requirements from `web/regression/requirements.txt`:
```bash
(venv) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
```
### Configuration
Create a local configuration file for pgAdmin. Edit `$PGADMIN4_SRC/web/config_local.py` and add any desired configuration options (use the `config.py` file as a reference - any settings duplicated in `config_local.py` will override those in `config.py`). A typical development configuration may look like:
```python
import os
import logging
# Change pgAdmin data directory
DATA_DIR = '/Users/myuser/.pgadmin_dev'
# Change pgAdmin server and port
DEFAULT_SERVER = '127.0.0.1'
DEFAULT_SERVER_PORT = 5051
# Switch between server and desktop mode
SERVER_MODE = True
# Change pgAdmin config DB path in case an external DB is used.
CONFIG_DATABASE_URI="postgresql://postgres:postgres@localhost:5436/pgadmin"
# Set up SMTP
MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USERNAME = 'user@gmail.com'
MAIL_PASSWORD = 'xxxxxxxxxx'
# Change log level
CONSOLE_LOG_LEVEL = logging.INFO
FILE_LOG_LEVEL = logging.INFO
# Use a different config DB for each server mode.
if SERVER_MODE == False:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-desktop.db'
)
else:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-server.db'
)
```
This configuration allows easy switching between server and desktop modes for testing.
### Running pgAdmin
The initial setup of the configuration database is interactive in server mode, and non-interactive in desktop mode. You can run it either by running:
```bash
(venv) $ python3 $PGADMIN4_SRC/web/setup.py
```
or by starting pgAdmin 4:
```bash
(venv) $ python3 $PGADMIN4_SRC/web/pgAdmin4.py
```
Whilst it is possible to automatically run setup in desktop mode by running the runtime, that will not work in server mode as the runtime doesn't allow command line interaction with the setup program.
At this point you will be able to run pgAdmin 4 from the command line in either server or desktop mode, and access it from a web browser using the URL shown in the terminal once pgAdmin has started up.
Setup of an environment on Windows is somewhat more complicated unfortunately, please see `pkg/win32/README.md` for complete details.
### Building the documentation
In order to build the docs, an additional Python package is required in the virtual environment. This can be installed with the pip package manager:
```bash
$ source venv/bin/activate
(venv) $ pip install Sphinx
(venv) $ pip install sphinxcontrib-youtube
```
The docs can then be built using the Makefile in `$PGADMIN4_SRC`, e.g.
```bash
(venv) $ make docs
```
The output can be found in `$PGADMIN4_SRC/docs/en_US/_build/html/index.html`
### Runtime Development
For Electron runtime development:
1. Navigate to the `runtime` directory.
2. Install dependencies:
```bash
yarn install
```
3. Copy:
```text
dev_config.json.in
```
to:
```text
dev_config.json
```
4. Update the paths to your Python executable and `pgAdmin4.py`.
Start the runtime:
```bash
yarn run start
```
### Building packages
Most packages can be built using the Makefile in `$PGADMIN4_SRC`, provided all the setup and configuration above has been completed.
To build a source tarball:
```bash
(venv) $ make src
```
To build a PIP Wheel, activate either a Python 3 virtual environment, configured with all the required packages, and then run:
```bash
(venv) $ make pip
```
To build the macOS AppBundle, please see `pkg/mac/README.md`.
To build the Windows installer, please see `pkg/win32/README.md`.
## Database Migrations
In order to make changes to the SQLite DB, navigate to the 'web' directory:
```bash
(venv) $ cd $PGADMIN4_SRC/web
```
Create a migration file with the following command:
```bash
(venv) $ FLASK_APP=pgAdmin4.py flask db revision
```
This will create a file in `$PGADMIN4_SRC/web/migrations/versions/`. Add any changes to the `upgrade` function.
When making schema changes, update the `SCHEMA_VERSION` value in:
```text
web/pgadmin/model/__init__.py
```
There is no need to increment the `SETTINGS_SCHEMA_VERSION`.
## Security Issues
**Do not report security vulnerabilities through GitHub issues.**
Potential security issues should be reported to:
`security@pgadmin.org`.
Note that this **address should only be used for reporting security issues** that you believe you've found in the design or code of pgAdmin, pgAgent, and the pgAdmin website. It **should not be used to ask security questions**.
If you are unsure whether an issue is a security vulnerability, please lean on the side of caution and report it to the above address. The pgAdmin team will review the report and respond as appropriate.
## Community and Support
For development discussions, use:
`pgadmin-hackers@postgresql.org`
For support options, visit the [pgAdmin support page](https://www.pgadmin.org/support/).
Use the [GitHub issue tracker](https://github.com/pgadmin-org/pgadmin4/issues) for reporting bugs and requesting features, but please follow the guidelines outlined in the "Reporting Issues" section above.
## License
By contributing to pgAdmin 4, you agree that your contributions will be licensed under the project's existing and future license terms.
-572
View File
@@ -1,572 +0,0 @@
pgAdmin 4 Dependency Inventory
==============================
pgAdmin 4 is built on Python, Javascript and NW.js (node-webkit), and is
dependent on various third party libraries. These are automatically compiled
from the system, requirements.txt and packages.json and listed below.
Runtime Dependencies
====================
Name Version Licence URL
---- ------- ------- ---
Python 3.6+ PSF https://www.python.org/
nw 0.50.2 MIT git://github.com/nwjs/npm-installer.git
axios 0.21.4 MIT https://github.com/axios/axios.git
bootstrap 4.6.2 MIT git+https://github.com/twbs/bootstrap.git
follow-redirects 1.15.2 MIT git@github.com:follow-redirects/follow-redirects.git
5 dependencies listed.
Python Dependencies
===================
Name Version Licence URL
---- ------- ------- ---
Flask 2.1.3 BSD-3-Clause https://palletsprojects.com/p/flask
Flask-Gravatar 0.5.0 BSD https://github.com/zzzsochi/Flask-Gravatar/
Flask-Login 0.6.2 MIT https://github.com/maxcountryman/flask-login
Flask-Mail 0.9.1 BSD https://github.com/rduplain/flask-mail
Flask-Migrate 3.1.0 UNKNOWN https://github.com/miguelgrinberg/flask-migrate
Flask-SQLAlchemy 2.5.1 BSD-3-Clause https://github.com/pallets/flask-sqlalchemy
Flask-WTF 1.0.1 BSD-3-Clause https://github.com/wtforms/flask-wtf/
Flask-Compress 1.13 MIT https://github.com/colour-science/flask-compress
Flask-Paranoid 0.3.0 UNKNOWN https://github.com/miguelgrinberg/flask-paranoid
Flask-Babel 2.0.0 BSD http://github.com/python-babel/flask-babel
Flask-Security-Too 4.1.5 MIT https://github.com/Flask-Middleware/flask-security
Flask-SocketIO 5.2.0 Unknown https://github.com/miguelgrinberg/flask-socketio
WTForms 3.0.1 BSD-3-Clause https://wtforms.readthedocs.io/
passlib 1.7.4 BSD https://passlib.readthedocs.io
pytz 2021.3 MIT http://pythonhosted.org/pytz
simplejson 3.18.0 MIT License https://github.com/simplejson/simplejson
speaklater3 1.4 UNKNOWN https://github.com/ThomasWaldmann/speaklater
sqlparse 0.4.3 BSD-3-Clause https://github.com/andialbrecht/sqlparse
psutil 5.9.3 BSD-3-Clause https://github.com/giampaolo/psutil
psycopg2 2.9.5 LGPL with exceptions https://psycopg.org/
python-dateutil 2.8.2 Dual License https://github.com/dateutil/dateutil
SQLAlchemy 1.4.45 MIT https://www.sqlalchemy.org
bcrypt 3.2.2 Apache License, Version 2.0 https://github.com/pyca/bcrypt/
cryptography 3.4.8 BSD or Apache License, Version 2.0 https://github.com/pyca/cryptography
sshtunnel 0.4.0 MIT https://github.com/pahaz/sshtunnel
ldap3 2.9.1 LGPL v3 https://github.com/cannatag/ldap3
gssapi 1.8.2 LICENSE.txt https://github.com/pythongssapi/python-gssapi
eventlet 0.33.0 UNKNOWN http://eventlet.net
httpagentparser 1.9.5 http://www.opensource.org/licenses/mit-license.php https://github.com/shon/httpagentparser
user-agents 2.2.0 MIT https://github.com/selwin/python-user-agents
pywinpty 1.1.* Unknown Unknown
Authlib 1.1.0 BSD 3-Clause License https://authlib.org/
requests 2.25.1 Apache 2.0 https://requests.readthedocs.io
pyotp 2.7.0 MIT License https://github.com/pyotp/pyotp
qrcode 7.3.1 BSD https://github.com/lincolnloop/python-qrcode
Pillow 9.3.0 HPND https://python-pillow.org
boto3 1.26.42 Apache License 2.0 https://github.com/boto/boto3
botocore 1.29.42 Apache License 2.0 https://github.com/boto/botocore
urllib3 1.26.13 MIT https://urllib3.readthedocs.io/
Werkzeug 2.1.2 BSD-3-Clause https://palletsprojects.com/p/werkzeug/
azure-mgmt-rdbms 10.1.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-mgmt-resource 21.0.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-mgmt-subscription 3.0.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-identity 1.9.0 MIT License https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity
NOTE: This report was generated using Python 3.10. Full information may not be
shown for Python modules that are not required with this version.
44 dependencies listed.
Javascript Dependencies
=======================
Name Version Licence URL
---- ------- ------- ---
@ampproject/remapping 2.2.0 Apache-2.0 git+https://github.com/ampproject/remapping.git
anti-trojan-source 1.4.0 Apache-2.0 https://github.com/lirantal/anti-trojan-source.git
bootstrap-datepicker 1.9.0 Apache-2.0 https://github.com/uxsolutions/bootstrap-datepicker.git
eve 0.5.4 Apache-2.0 git@github.com:adobe-webplatform/eve.git
jmespath 0.16.0 Apache-2.0 git://github.com/jmespath/jmespath.js
jsoneditor 9.9.2 Apache-2.0 https://github.com/josdejong/jsoneditor.git
paths-js 0.4.11 Apache-2.0 https://github.com/andreaferretti/paths-js.git
rc-dock 3.2.14 Apache-2.0 https://github.com/ticlo/rc-dock.git
rc-new-window 0.1.13 Apache-2.0 https://github.com/ticlo/rc-new-window.git
snapsvg 0.5.1 Apache-2.0 git@github.com:adobe-webplatform/Snap.svg.git
spdx-correct 3.1.1 Apache-2.0 https://github.com/jslicense/spdx-correct.js.git
validate-npm-package-license 3.0.4 Apache-2.0 https://github.com/kemitchell/validate-npm-package-license.js.git
@babel/code-frame 7.18.6 MIT https://github.com/babel/babel.git
@babel/compat-data 7.20.1 MIT https://github.com/babel/babel.git
@babel/core 7.20.2 MIT https://github.com/babel/babel.git
@babel/generator 7.20.4 MIT https://github.com/babel/babel.git
@babel/helper-annotate-as-pure 7.18.6 MIT https://github.com/babel/babel.git
@babel/helper-compilation-targets 7.20.0 MIT https://github.com/babel/babel.git
@babel/helper-create-class-features-plugin 7.20.2 MIT https://github.com/babel/babel.git
@babel/helper-environment-visitor 7.18.9 MIT https://github.com/babel/babel.git
@babel/helper-function-name 7.19.0 MIT https://github.com/babel/babel.git
@babel/helper-hoist-variables 7.18.6 MIT https://github.com/babel/babel.git
@babel/helper-member-expression-to-functions 7.18.9 MIT https://github.com/babel/babel.git
@babel/helper-module-imports 7.18.6 MIT https://github.com/babel/babel.git
@babel/helper-module-transforms 7.20.2 MIT https://github.com/babel/babel.git
@babel/helper-optimise-call-expression 7.18.6 MIT https://github.com/babel/babel.git
@babel/helper-plugin-utils 7.20.2 MIT https://github.com/babel/babel.git
@babel/helper-replace-supers 7.19.1 MIT https://github.com/babel/babel.git
@babel/helper-simple-access 7.20.2 MIT https://github.com/babel/babel.git
@babel/helper-split-export-declaration 7.18.6 MIT https://github.com/babel/babel.git
@babel/helper-string-parser 7.19.4 MIT https://github.com/babel/babel.git
@babel/helper-validator-identifier 7.19.1 MIT https://github.com/babel/babel.git
@babel/helper-validator-option 7.18.6 MIT https://github.com/babel/babel.git
@babel/helpers 7.20.1 MIT https://github.com/babel/babel.git
@babel/highlight 7.18.6 MIT https://github.com/babel/babel.git
@babel/parser 7.20.3 MIT https://github.com/babel/babel.git
@babel/plugin-proposal-class-properties 7.18.6 MIT https://github.com/babel/babel.git
@babel/plugin-syntax-jsx 7.18.6 MIT https://github.com/babel/babel.git
@babel/plugin-transform-react-display-name 7.18.6 MIT https://github.com/babel/babel.git
@babel/plugin-transform-react-jsx 7.19.0 MIT https://github.com/babel/babel.git
@babel/plugin-transform-react-jsx-development 7.18.6 MIT https://github.com/babel/babel.git
@babel/plugin-transform-react-pure-annotations 7.18.6 MIT https://github.com/babel/babel.git
@babel/preset-react 7.18.6 MIT https://github.com/babel/babel.git
@babel/runtime 7.20.1 MIT https://github.com/babel/babel.git
@babel/template 7.18.10 MIT https://github.com/babel/babel.git
@babel/traverse 7.20.1 MIT https://github.com/babel/babel.git
@babel/types 7.20.2 MIT https://github.com/babel/babel.git
@date-io/core 1.3.13 MIT https://github.com/dmtrKovalenko/date-io
@date-io/date-fns 1.3.13 MIT https://github.com/dmtrKovalenko/date-io
@emotion/babel-plugin 11.10.5 MIT https://github.com/emotion-js/emotion/tree/main/packages/babel-plugin
@emotion/cache 11.10.5 MIT https://github.com/emotion-js/emotion/tree/main/packages/cache
@emotion/hash 0.8.0 MIT https://github.com/emotion-js/emotion/tree/master/packages/hash
@emotion/hash 0.9.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/hash
@emotion/is-prop-valid 1.2.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/is-prop-valid
@emotion/memoize 0.8.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/memoize
@emotion/react 11.10.5 MIT https://github.com/emotion-js/emotion/tree/main/packages/react
@emotion/serialize 1.1.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/serialize
@emotion/sheet 1.2.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/sheet
@emotion/stylis 0.8.5 MIT https://github.com/emotion-js/emotion/tree/master/packages/stylis
@emotion/unitless 0.8.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/unitless
@emotion/unitless 0.7.5 MIT https://github.com/emotion-js/emotion/tree/master/packages/unitless
@emotion/use-insertion-effect-with-fallbacks 1.0.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/use-insertion-effect-with-fallbacks
@emotion/utils 1.2.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/utils
@emotion/weak-memoize 0.3.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/weak-memoize
@istanbuljs/schema 0.1.3 MIT git+https://github.com/istanbuljs/schema.git
@jridgewell/gen-mapping 0.3.2 MIT https://github.com/jridgewell/gen-mapping
@jridgewell/gen-mapping 0.1.1 MIT https://github.com/jridgewell/gen-mapping
@jridgewell/resolve-uri 3.1.0 MIT https://github.com/jridgewell/resolve-uri
@jridgewell/set-array 1.1.2 MIT https://github.com/jridgewell/set-array
@jridgewell/sourcemap-codec 1.4.14 MIT git+https://github.com/jridgewell/sourcemap-codec.git
@jridgewell/trace-mapping 0.3.17 MIT git+https://github.com/jridgewell/trace-mapping.git
@material-ui/core 4.11.0 MIT https://github.com/mui-org/material-ui.git
@material-ui/icons 4.11.3 MIT https://github.com/mui-org/material-ui.git
@material-ui/lab 4.0.0-alpha.58 MIT https://github.com/mui-org/material-ui.git
@material-ui/pickers 3.3.10 MIT https://github.com/mui-org/material-ui-pickers
@material-ui/styles 4.11.5 MIT https://github.com/mui-org/material-ui.git
@material-ui/system 4.12.2 MIT https://github.com/mui-org/material-ui.git
@material-ui/types 5.1.0 MIT https://github.com/mui-org/material-ui.git
@material-ui/utils 4.11.3 MIT https://github.com/mui-org/material-ui.git
@nodelib/fs.scandir 2.1.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir
@nodelib/fs.stat 2.0.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat
@nodelib/fs.walk 1.2.8 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk
@projectstorm/geometry 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-canvas-core 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams-core 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams-defaults 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-diagrams-routing 6.7.4 MIT https://github.com/projectstorm/react-diagrams.git
@react-dnd/asap 5.0.2 MIT https://github.com/react-dnd/react-dnd
@react-dnd/invariant 4.0.2 MIT https://github.com/react-dnd/react-dnd
@react-dnd/shallowequal 4.0.2 MIT https://github.com/react-dnd/react-dnd
@remix-run/router 1.0.3 MIT https://github.com/remix-run/react-router
@simonwep/pickr 1.8.2 MIT https://github.com/Simonwep/pickr.git
@sindresorhus/is 0.7.0 MIT https://github.com/sindresorhus/is.git
@socket.io/component-emitter 3.1.0 MIT https://github.com/socketio/emitter.git
@szhsin/react-menu 2.3.4 MIT https://github.com/szhsin/react-menu.git
@types/classnames 2.3.1 MIT Unknown
@types/minimist 1.2.2 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/node 18.11.9 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/normalize-package-data 2.4.1 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/parse-json 4.0.0 MIT https://www.github.com/DefinitelyTyped/DefinitelyTyped.git
@types/prop-types 15.7.5 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react 18.0.25 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react 16.14.34 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react-dom 16.9.17 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react-transition-group 4.4.5 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/scheduler 0.16.2 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/styled-jsx 2.2.9 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
ajv 8.11.2 MIT https://github.com/ajv-validator/ajv.git
ajv 6.12.6 MIT https://github.com/ajv-validator/ajv.git
ansi-styles 3.2.1 MIT https://github.com/chalk/ansi-styles.git
array-union 3.0.1 MIT https://github.com/sindresorhus/array-union.git
arrify 1.0.1 MIT https://github.com/sindresorhus/arrify.git
aspen-core 1.0.5 MIT git+https://github.com/neeksandhu/aspen-core.git
aspen-decorations 1.1.1 MIT git+https://github.com/neeksandhu/aspen-decorations.git
aspen-tree-model 1.0.5 MIT git+https://github.com/neeksandhu/aspen-tree-model.git
async 2.6.4 MIT https://github.com/caolan/async.git
attr-accept 2.2.2 MIT https://github.com/react-dropzone/attr-accept.git
axios 0.21.4 MIT https://github.com/axios/axios.git
babel-plugin-macros 3.1.0 MIT https://github.com/kentcdodds/babel-plugin-macros
babel-plugin-styled-components 2.0.7 MIT https://github.com/styled-components/babel-plugin-styled-components.git
babel-plugin-syntax-jsx 6.18.0 MIT https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-jsx
babelify 10.0.0 MIT https://github.com/babel/babelify.git
balanced-match 1.0.2 MIT git://github.com/juliangruber/balanced-match.git
base64-arraybuffer 1.0.2 MIT https://github.com/niklasvh/base64-arraybuffer
bignumber.js 9.1.0 MIT https://github.com/MikeMcl/bignumber.js.git
bootstrap 4.6.2 MIT git+https://github.com/twbs/bootstrap.git
bootstrap4-toggle 3.6.1 MIT https://github.com/gitbrent/bootstrap4-toggle.git
bowser 2.11.0 MIT git+https://github.com/lancedikson/bowser.git
brace 0.11.1 MIT git://github.com/thlorenz/brace.git
brace-expansion 1.1.11 MIT git://github.com/juliangruber/brace-expansion.git
braces 3.0.2 MIT https://github.com/micromatch/braces.git
browserfs 1.4.3 MIT https://github.com/jvilk/BrowserFS.git
browserslist 4.21.4 MIT https://github.com/browserslist/browserslist.git
callsites 3.1.0 MIT https://github.com/sindresorhus/callsites.git
camelcase 6.3.0 MIT https://github.com/sindresorhus/camelcase.git
camelcase-keys 7.0.2 MIT https://github.com/sindresorhus/camelcase-keys.git
camelize 1.0.1 MIT git://github.com/ljharb/camelize.git
caniuse-api 3.0.0 MIT https://github.com/nyalab/caniuse-api.git
chalk 2.4.2 MIT https://github.com/chalk/chalk.git
chart.js 3.9.1 MIT https://github.com/chartjs/Chart.js.git
chartjs-plugin-zoom 1.3.0 MIT https://github.com/chartjs/chartjs-plugin-zoom.git
classnames 2.3.2 MIT https://github.com/JedWatson/classnames.git
closest 0.0.1 MIT https://github.com/ForbesLindesay/closest.git
clsx 1.2.1 MIT https://github.com/lukeed/clsx.git
codemirror 5.65.10 MIT https://github.com/codemirror/CodeMirror.git
color-convert 1.9.3 MIT https://github.com/Qix-/color-convert.git
color-name 1.1.3 MIT git@github.com:dfcreative/color-name.git
colord 2.9.3 MIT https://github.com/omgovich/colord.git
commander 7.2.0 MIT https://github.com/tj/commander.js.git
concat-map 0.0.1 MIT git://github.com/substack/node-concat-map.git
convert-source-map 1.9.0 MIT git://github.com/thlorenz/convert-source-map.git
convert-units 2.3.4 MIT git://github.com/ben-ng/convert-units.git
core-js 3.26.1 MIT https://github.com/zloirock/core-js.git
cosmiconfig 7.1.0 MIT git+https://github.com/davidtheclark/cosmiconfig.git
css-line-break 2.1.0 MIT git+ssh://git@github.com/niklasvh/css-line-break.git
css-to-react-native 3.0.0 MIT git+https://github.com/styled-components/css-to-react-native.git
css-tree 1.1.3 MIT https://github.com/csstree/csstree.git
css-vendor 2.0.8 MIT git@github.com:cssinjs/css-vendor.git
cssesc 3.0.0 MIT https://github.com/mathiasbynens/cssesc.git
cssnano 5.1.14 MIT https://github.com/cssnano/cssnano.git
cssnano-preset-default 5.2.13 MIT https://github.com/cssnano/cssnano.git
cssnano-utils 3.1.0 MIT https://github.com/cssnano/cssnano.git
csso 4.2.0 MIT https://github.com/css/csso.git
csstype 2.6.21 MIT https://github.com/frenic/csstype
csstype 3.1.1 MIT https://github.com/frenic/csstype
dagre 0.8.5 MIT https://github.com/dagrejs/dagre.git
date-fns 2.29.3 MIT https://github.com/date-fns/date-fns
debug 4.3.4 MIT git://github.com/debug-js/debug.git
decamelize 5.0.1 MIT https://github.com/sindresorhus/decamelize.git
decamelize 1.2.0 MIT https://github.com/sindresorhus/decamelize.git
decamelize-keys 1.1.1 MIT https://github.com/sindresorhus/decamelize-keys.git
deep-diff 1.0.2 MIT git://github.com/flitbit/diff.git
diff-arrays-of-objects 1.1.9 MIT git+https://github.com/malcolmvr/diff-arrays-of-objects.git
dir-glob 3.0.1 MIT https://github.com/kevva/dir-glob.git
dnd-core 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
dom-align 1.12.4 MIT git@github.com:yiminghe/dom-align.git
dom-helpers 5.2.1 MIT git+https://github.com/react-bootstrap/dom-helpers.git
dom-serializer 1.4.1 MIT git://github.com/cheeriojs/dom-renderer.git
engine.io-client 6.2.3 MIT https://github.com/socketio/engine.io-client.git
engine.io-parser 5.0.4 MIT git@github.com:socketio/engine.io-parser.git
error-ex 1.3.2 MIT https://github.com/qix-/node-error-ex.git
escalade 3.1.1 MIT https://github.com/lukeed/escalade.git
escape-string-regexp 1.0.5 MIT https://github.com/sindresorhus/escape-string-regexp.git
escape-string-regexp 4.0.0 MIT https://github.com/sindresorhus/escape-string-regexp.git
fast-deep-equal 3.1.3 MIT git+https://github.com/epoberezkin/fast-deep-equal.git
fast-glob 3.2.12 MIT https://github.com/mrmlnc/fast-glob.git
fast-json-stable-stringify 2.1.0 MIT git://github.com/epoberezkin/fast-json-stable-stringify.git
fast-memoize 2.5.2 MIT git+https://github.com/caiogondim/fast-memoize.git
file-selector 0.6.0 MIT https://github.com/react-dropzone/file-selector.git
filename-reserved-regex 2.0.0 MIT https://github.com/sindresorhus/filename-reserved-regex.git
fill-range 7.0.1 MIT https://github.com/jonschlinkert/fill-range.git
find-root 1.1.0 MIT git@github.com:js-n/find-root.git
find-up 5.0.0 MIT https://github.com/sindresorhus/find-up.git
follow-redirects 1.15.2 MIT git@github.com:follow-redirects/follow-redirects.git
function-bind 1.1.1 MIT git://github.com/Raynos/function-bind.git
gensync 1.0.0-beta.2 MIT https://github.com/loganfsmyth/gensync.git
globals 11.12.0 MIT https://github.com/sindresorhus/globals.git
globby 12.2.0 MIT https://github.com/sindresorhus/globby.git
graphlib 2.1.8 MIT https://github.com/dagrejs/graphlib.git
hammerjs 2.0.8 MIT git://github.com/hammerjs/hammer.js.git
hard-rejection 2.1.0 MIT https://github.com/sindresorhus/hard-rejection.git
has 1.0.3 MIT git://github.com/tarruda/has.git
has-flag 3.0.0 MIT https://github.com/sindresorhus/has-flag.git
has-flag 4.0.0 MIT https://github.com/sindresorhus/has-flag.git
html-escaper 2.0.2 MIT https://github.com/WebReflection/html-escaper.git
html2canvas 1.4.1 MIT git@github.com:niklasvh/html2canvas.git
ignore 5.2.1 MIT git@github.com:kaelzhang/node-ignore.git
immutability-helper 3.1.1 MIT git+https://github.com/kolodny/immutability-helper.git
import-fresh 3.3.0 MIT https://github.com/sindresorhus/import-fresh.git
indent-string 5.0.0 MIT https://github.com/sindresorhus/indent-string.git
insert-if 1.2.0 MIT git+https://github.com/chipto/insert-if.git
ip-address 7.1.0 MIT git://github.com/beaugunderson/ip-address.git
is-any-array 2.0.0 MIT https://github.com/cheminfo-js/is-any-array.git
is-arrayish 0.2.1 MIT https://github.com/qix-/node-is-arrayish.git
is-core-module 2.11.0 MIT git+https://github.com/inspect-js/is-core-module.git
is-extglob 2.1.1 MIT https://github.com/jonschlinkert/is-extglob.git
is-glob 4.0.3 MIT https://github.com/micromatch/is-glob.git
is-in-browser 1.1.3 MIT git+https://github.com/tuxsudo/is-in-browser.git
is-number 7.0.0 MIT https://github.com/jonschlinkert/is-number.git
is-plain-obj 1.1.0 MIT https://github.com/sindresorhus/is-plain-obj.git
is-relative 1.0.0 MIT https://github.com/jonschlinkert/is-relative.git
is-unc-path 1.0.0 MIT https://github.com/jonschlinkert/is-unc-path.git
javascript-natural-sort 0.7.1 MIT https://github.com/Bill4Time/javascript-natural-sort.git
jquery 3.6.1 MIT https://github.com/jquery/jquery.git
jquery-contextmenu 2.9.2 MIT git://github.com/swisnl/jQuery-contextMenu.git
js-tokens 4.0.0 MIT https://github.com/lydell/js-tokens.git
jsbn 1.1.0 MIT https://github.com/andyperlitch/jsbn.git
jsesc 2.5.2 MIT https://github.com/mathiasbynens/jsesc.git
json-bignumber 1.1.1 MIT git@github.com:wbuss/JSONBigNumber.git
json-parse-even-better-errors 2.3.1 MIT https://github.com/npm/json-parse-even-better-errors
json-schema-traverse 1.0.0 MIT git+https://github.com/epoberezkin/json-schema-traverse.git
json-schema-traverse 0.4.1 MIT git+https://github.com/epoberezkin/json-schema-traverse.git
json-source-map 0.6.1 MIT git+https://github.com/epoberezkin/json-source-map.git
json5 2.2.3 MIT git+https://github.com/json5/json5.git
jsoneditor-react 3.1.2 MIT git+https://github.com/vankop/jsoneditor-react.git
jss 10.9.2 MIT https://github.com/cssinjs/jss.git
jss-plugin-camel-case 10.9.2 MIT https://github.com/cssinjs/jss.git
jss-plugin-default-unit 10.9.2 MIT https://github.com/cssinjs/jss.git
jss-plugin-global 10.9.2 MIT https://github.com/cssinjs/jss.git
jss-plugin-nested 10.9.2 MIT https://github.com/cssinjs/jss.git
jss-plugin-props-sort 10.9.2 MIT https://github.com/cssinjs/jss.git
jss-plugin-rule-value-function 10.9.2 MIT https://github.com/cssinjs/jss.git
jss-plugin-vendor-prefixer 10.9.2 MIT https://github.com/cssinjs/jss.git
karma-coverage 2.2.0 MIT git://github.com/karma-runner/karma-coverage.git
kind-of 6.0.3 MIT https://github.com/jonschlinkert/kind-of.git
lilconfig 2.0.6 MIT https://github.com/antonk52/lilconfig
lines-and-columns 1.2.4 MIT https://github.com/eventualbuddha/lines-and-columns.git
locate-path 6.0.0 MIT https://github.com/sindresorhus/locate-path.git
lodash 4.17.21 MIT https://github.com/lodash/lodash.git
lodash._basebind 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._basecreate 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._basecreatecallback 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._basecreatewrapper 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._createwrapper 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._objecttypes 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._renative 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._setbinddata 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._shimkeys 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._slice 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.bind 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.foreach 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.forown 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.identity 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.isfunction 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.isobject 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.keys 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.memoize 4.1.2 MIT https://github.com/lodash/lodash.git
lodash.noop 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.support 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.uniq 4.5.0 MIT https://github.com/lodash/lodash.git
loose-envify 1.4.0 MIT git://github.com/zertosh/loose-envify.git
make-dir 3.1.0 MIT https://github.com/sindresorhus/make-dir.git
map-obj 4.3.0 MIT https://github.com/sindresorhus/map-obj.git
map-obj 1.0.1 MIT https://github.com/sindresorhus/map-obj.git
matches-selector 0.0.1 MIT https://github.com/ForbesLindesay/matches-selector.git
memoize-one 5.2.1 MIT https://github.com/alexreardon/memoize-one.git
meow 10.1.5 MIT https://github.com/sindresorhus/meow.git
merge2 1.4.1 MIT git@github.com:teambition/merge2.git
micromatch 4.0.5 MIT https://github.com/micromatch/micromatch.git
min-indent 1.0.1 MIT https://github.com/thejameskyle/min-indent
minimist-options 4.1.0 MIT https://github.com/vadimdemedes/minimist-options.git
ml-array-max 1.2.4 MIT git+https://github.com/mljs/array.git
ml-array-min 1.2.3 MIT git+https://github.com/mljs/array.git
ml-array-rescale 1.3.7 MIT git+https://github.com/mljs/array.git
ml-matrix 6.10.4 MIT https://github.com/mljs/matrix.git
mobius1-selectr 2.4.13 MIT git+https://github.com/Mobius1/Selectr.git
moment 2.29.4 MIT https://github.com/moment/moment.git
moment-timezone 0.5.39 MIT https://github.com/moment/moment-timezone.git
ms 2.1.2 MIT https://github.com/zeit/ms.git
nanoid 3.3.4 MIT https://github.com/ai/nanoid.git
nanopop 2.2.0 MIT https://github.com/Simonwep/nanopop.git
node-releases 2.0.6 MIT https://github.com/chicoxyzzy/node-releases.git
normalize-url 6.1.0 MIT https://github.com/sindresorhus/normalize-url.git
notificar 1.0.1 MIT git+https://github.com/neeksandhu/notificar.git
notistack 1.0.10 MIT git+https://github.com/iamhosseindhv/notistack.git
object-assign 4.1.1 MIT https://github.com/sindresorhus/object-assign.git
p-limit 3.1.0 MIT https://github.com/sindresorhus/p-limit.git
p-locate 5.0.0 MIT https://github.com/sindresorhus/p-locate.git
p-reduce 1.0.0 MIT https://github.com/sindresorhus/p-reduce.git
p-series 1.1.0 MIT https://github.com/sindresorhus/p-series.git
parent-module 1.0.1 MIT https://github.com/sindresorhus/parent-module.git
parse-json 5.2.0 MIT https://github.com/sindresorhus/parse-json.git
path-exists 4.0.0 MIT https://github.com/sindresorhus/path-exists.git
path-fx 2.1.2 MIT git+https://github.com/NeekSandhu/path-fx.git
path-parse 1.0.7 MIT https://github.com/jbgutierrez/path-parse.git
path-type 4.0.0 MIT https://github.com/sindresorhus/path-type.git
pathfinding 0.4.18 MIT git://github.com/qiao/PathFinding.js.git
performance-now 2.1.0 MIT git://github.com/braveg1rl/performance-now.git
picomatch 2.3.1 MIT https://github.com/micromatch/picomatch.git
picomodal 3.0.0 MIT https://github.com/Nycto/PicoModal.git
popper.js 1.16.1-lts MIT git+https://github.com/FezVrasta/popper.js.git
popper.js 1.16.1 MIT git+https://github.com/FezVrasta/popper.js.git
postcss 8.4.19 MIT https://github.com/postcss/postcss.git
postcss-calc 8.2.4 MIT https://github.com/postcss/postcss-calc.git
postcss-colormin 5.3.0 MIT https://github.com/cssnano/cssnano.git
postcss-convert-values 5.1.3 MIT https://github.com/cssnano/cssnano.git
postcss-discard-comments 5.1.2 MIT https://github.com/cssnano/cssnano.git
postcss-discard-duplicates 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-discard-empty 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-discard-overridden 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-merge-longhand 5.1.7 MIT https://github.com/cssnano/cssnano.git
postcss-merge-rules 5.1.3 MIT https://github.com/cssnano/cssnano.git
postcss-minify-font-values 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-minify-gradients 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-minify-params 5.1.4 MIT https://github.com/cssnano/cssnano.git
postcss-minify-selectors 5.2.1 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-charset 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-display-values 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-positions 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-repeat-style 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-string 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-timing-functions 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-unicode 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-url 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-normalize-whitespace 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-ordered-values 5.1.3 MIT https://github.com/cssnano/cssnano.git
postcss-reduce-initial 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-reduce-transforms 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-selector-parser 6.0.11 MIT https://github.com/postcss/postcss-selector-parser.git
postcss-svgo 5.1.0 MIT https://github.com/cssnano/cssnano.git
postcss-unique-selectors 5.1.1 MIT https://github.com/cssnano/cssnano.git
postcss-value-parser 4.2.0 MIT https://github.com/TrySound/postcss-value-parser.git
prop-types 15.8.1 MIT https://github.com/facebook/prop-types.git
punycode 2.1.1 MIT https://github.com/bestiejs/punycode.js.git
queue-microtask 1.2.3 MIT git://github.com/feross/queue-microtask.git
quick-lru 5.1.1 MIT https://github.com/sindresorhus/quick-lru.git
raf 3.4.1 MIT git://github.com/chrisdickinson/raf.git
rc-align 4.0.12 MIT git@github.com:react-component/align.git
rc-dropdown 3.6.2 MIT git@github.com:react-component/dropdown.git
rc-dropdown 4.0.1 MIT git@github.com:react-component/dropdown.git
rc-menu 9.8.0 MIT git@github.com:react-component/menu.git
rc-menu 9.6.4 MIT git@github.com:react-component/menu.git
rc-motion 2.6.2 MIT git@github.com:react-component/motion.git
rc-overflow 1.2.8 MIT git@github.com:react-component/overflow.git
rc-resize-observer 1.2.0 MIT git@github.com:react-component/resize-observer.git
rc-tabs 11.16.1 MIT git@github.com:react-component/tabs.git
rc-trigger 5.3.4 MIT https://github.com/react-component/trigger.git
rc-util 5.24.6 MIT git@github.com:react-component/util.git
re-resizable 6.9.6 MIT https://github.com/bokuweb/react-resizable-box.git
react 17.0.2 MIT https://github.com/facebook/react.git
react-aspen 1.2.0 MIT https://github.com/neeksandhu/react-aspen.git
react-checkbox-tree 1.8.0 MIT https://github.com/jakezatecky/react-checkbox-tree
react-data-grid 7.0.0-beta.14 MIT https://github.com/adazzle/react-data-grid.git
react-dnd 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
react-dnd-html5-backend 16.0.1 MIT https://github.com/react-dnd/react-dnd.git
react-dom 17.0.2 MIT https://github.com/facebook/react.git
react-draggable 4.4.5 MIT https://github.com/react-grid-layout/react-draggable.git
react-draggable 4.4.4 MIT https://github.com/react-grid-layout/react-draggable.git
react-dropzone 14.2.3 MIT https://github.com/react-dropzone/react-dropzone.git
react-input-autosize 3.0.0 MIT https://github.com/JedWatson/react-input-autosize.git
react-is 16.13.1 MIT https://github.com/facebook/react.git
react-is 17.0.2 MIT https://github.com/facebook/react.git
react-rnd 10.3.7 MIT https://github.com/bokuweb/react-rnd.git
react-router 6.4.3 MIT https://github.com/remix-run/react-router
react-router-dom 6.4.3 MIT https://github.com/remix-run/react-router
react-select 4.3.1 MIT https://github.com/JedWatson/react-select/tree/master/packages/react-select
react-table 7.8.0 MIT https://github.com/tannerlinsley/react-table
react-transition-state 1.1.5 MIT https://github.com/szhsin/react-transition-state.git
react-virtualized-auto-sizer 1.0.7 MIT https://github.com/bvaughn/react-virtualized-auto-sizer.git
react-window 1.8.8 MIT https://github.com/bvaughn/react-window.git
read-pkg 6.0.0 MIT https://github.com/sindresorhus/read-pkg.git
read-pkg-up 8.0.0 MIT https://github.com/sindresorhus/read-pkg-up.git
redent 4.0.0 MIT https://github.com/sindresorhus/redent.git
redux 4.2.0 MIT https://github.com/reduxjs/redux.git
regenerator-runtime 0.13.11 MIT https://github.com/facebook/regenerator/tree/main/packages/runtime
require-from-string 2.0.2 MIT https://github.com/floatdrop/require-from-string.git
resize-observer-polyfill 1.5.1 MIT https://github.com/que-etc/resize-observer-polyfill.git
resolve 1.22.1 MIT git://github.com/browserify/resolve.git
resolve-from 4.0.0 MIT https://github.com/sindresorhus/resolve-from.git
reusify 1.0.4 MIT git+https://github.com/mcollina/reusify.git
rifm 0.7.0 MIT https://github.com/istarkov/rifm.git
run-parallel 1.2.0 MIT git://github.com/feross/run-parallel.git
scheduler 0.20.2 MIT https://github.com/facebook/react.git
select2 4.0.13 MIT git://github.com/select2/select2.git
shallowequal 1.1.0 MIT https://github.com/dashed/shallowequal.git
slash 4.0.0 MIT https://github.com/sindresorhus/slash.git
snapsvg-cjs 0.0.6 MIT git+https://github.com/geelen/Snap.svg-cjs.git
socket.io-client 4.5.4 MIT https://github.com/socketio/socket.io-client.git
socket.io-parser 4.2.1 MIT https://github.com/socketio/socket.io-parser.git
spdx-expression-parse 3.0.1 MIT https://github.com/jslicense/spdx-expression-parse.js.git
split.js 1.6.5 MIT https://github.com/nathancahill/split
stable 0.1.8 MIT https://github.com/Two-Screen/stable.git
strip-indent 4.0.0 MIT https://github.com/sindresorhus/strip-indent.git
styled-components 5.3.6 MIT git+https://github.com/styled-components/styled-components.git
stylehacks 5.1.1 MIT https://github.com/cssnano/cssnano.git
stylis 4.1.3 MIT https://github.com/thysultan/stylis.js
supports-color 5.5.0 MIT https://github.com/chalk/supports-color.git
supports-color 7.2.0 MIT https://github.com/chalk/supports-color.git
supports-preserve-symlinks-flag 1.0.0 MIT git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git
svgo 2.8.0 MIT git://github.com/svg/svgo.git
tempusdominus-bootstrap-4 5.39.2 MIT https://github.com/tempusdominus/bootstrap-4.git
tempusdominus-core 5.19.3 MIT https://github.com/tempusdominus/core.git
text-segmentation 1.0.3 MIT git+ssh://git@github.com/niklasvh/text-segmentation.git
tiny-warning 1.0.3 MIT https://github.com/alexreardon/tiny-warning.git
to-fast-properties 2.0.0 MIT https://github.com/sindresorhus/to-fast-properties.git
to-regex-range 5.0.1 MIT https://github.com/micromatch/to-regex-range.git
trim-newlines 4.0.2 MIT https://github.com/sindresorhus/trim-newlines.git
unc-path-regex 0.1.2 MIT https://github.com/regexhq/unc-path-regex.git
update-browserslist-db 1.0.10 MIT https://github.com/browserslist/update-db.git
util-deprecate 1.0.2 MIT git://github.com/TooTallNate/util-deprecate.git
utrie 1.0.2 MIT git+ssh://git@github.com/niklasvh/utrie.git
valid-filename 2.0.1 MIT https://github.com/sindresorhus/valid-filename.git
wkx 0.5.0 MIT http://github.com/cschwarz/wkx.git
ws 8.2.3 MIT https://github.com/websockets/ws.git
xmlhttprequest-ssl 2.0.0 MIT git://github.com/mjwwit/node-XMLHttpRequest.git
xterm 4.19.0 MIT https://github.com/xtermjs/xterm.js
xterm-addon-fit 0.5.0 MIT https://github.com/xtermjs/xterm.js
xterm-addon-search 0.8.2 MIT https://github.com/xtermjs/xterm.js
xterm-addon-web-links 0.4.0 MIT https://github.com/xtermjs/xterm.js
yocto-queue 0.1.0 MIT https://github.com/sindresorhus/yocto-queue.git
@fortawesome/fontawesome-free 5.15.4 (CC-BY-4.0 AND OFL-1.1 AND MIT) https://github.com/FortAwesome/Font-Awesome
@react-leaflet/core 1.1.1 Hippocratic-2.1 https://github.com/PaulLeCam/react-leaflet.git
react-leaflet 3.2.5 Hippocratic-2.1 https://github.com/PaulLeCam/react-leaflet.git
@sphinxxxx/color-conversion 2.2.2 ISC git+https://github.com/Sphinxxxx/color-conversion.git
@trysound/sax 0.2.0 ISC git://github.com/svg/sax.git
boolbase 1.0.0 ISC https://github.com/fb55/boolbase
css-color-keywords 1.0.0 ISC https://github.com/sonicdoe/css-color-keywords.git
css-declaration-sorter 6.3.1 ISC https://github.com/Siilwyn/css-declaration-sorter.git
electron-to-chromium 1.4.284 ISC https://github.com/kilian/electron-to-chromium/
fastq 1.13.0 ISC git+https://github.com/mcollina/fastq.git
glob-parent 5.1.2 ISC https://github.com/gulpjs/glob-parent.git
hosted-git-info 4.1.0 ISC git+https://github.com/npm/hosted-git-info.git
jsonrepair 2.2.1 ISC https://github.com/josdejong/jsonrepair.git
lru-cache 6.0.0 ISC git://github.com/isaacs/node-lru-cache.git
minimatch 3.1.2 ISC git://github.com/isaacs/minimatch.git
picocolors 1.0.0 ISC https://github.com/alexeyraspopov/picocolors.git
react-timer-hook 3.0.5 ISC git+https://github.com/amrlabib/react-timer-hook.git
semver 7.3.8 ISC https://github.com/npm/node-semver.git
semver 6.3.0 ISC https://github.com/npm/node-semver
vanilla-picker 2.12.1 ISC https://github.com/Sphinxxxx/vanilla-picker.git
yallist 4.0.0 ISC git+https://github.com/isaacs/yallist.git
yaml 1.10.2 ISC https://github.com/eemeli/yaml.git
yargs-parser 20.2.9 ISC https://github.com/yargs/yargs-parser.git
ace-builds 1.13.1 BSD-3-Clause https://github.com/ajaxorg/ace-builds.git
hoist-non-react-statics 3.3.2 BSD-3-Clause git://github.com/mridgway/hoist-non-react-statics.git
hyphenate-style-name 1.0.4 BSD-3-Clause git+ssh://git@github.com/rexxars/hyphenate-style-name.git
istanbul-lib-coverage 3.2.0 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
istanbul-lib-instrument 5.2.1 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
istanbul-lib-report 3.0.0 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
istanbul-lib-source-maps 4.0.1 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
istanbul-reports 3.1.5 BSD-3-Clause git+ssh://git@github.com/istanbuljs/istanbuljs.git
react-transition-group 4.4.5 BSD-3-Clause https://github.com/reactjs/react-transition-group.git
source-map 0.6.1 BSD-3-Clause http://github.com/mozilla/source-map.git
source-map 0.5.7 BSD-3-Clause http://github.com/mozilla/source-map.git
source-map-js 1.0.2 BSD-3-Clause https://github.com/7rulnik/source-map-js.git
sprintf-js 1.1.2 BSD-3-Clause https://github.com/alexei/sprintf.js.git
caniuse-lite 1.0.30001434 CC-BY-4.0 https://github.com/browserslist/caniuse-lite.git
css-select 4.3.0 BSD-2-Clause git://github.com/fb55/css-select.git
css-what 6.1.0 BSD-2-Clause https://github.com/fb55/css-what
domelementtype 2.3.0 BSD-2-Clause git://github.com/fb55/domelementtype.git
domhandler 4.3.1 BSD-2-Clause git://github.com/fb55/domhandler.git
domutils 2.8.0 BSD-2-Clause git://github.com/fb55/domutils.git
entities 2.2.0 BSD-2-Clause git://github.com/fb55/entities.git
leaflet 1.9.3 BSD-2-Clause git://github.com/Leaflet/Leaflet.git
normalize-package-data 3.0.3 BSD-2-Clause git://github.com/npm/normalize-package-data.git
nth-check 2.1.1 BSD-2-Clause https://github.com/fb55/nth-check
uri-js 4.4.1 BSD-2-Clause http://github.com/garycourt/uri-js
FileSaver 0.10.0 UNKNOWN Unknown
heap 0.2.5 UNKNOWN git://github.com/qiao/heap.js.git
mdn-data 2.0.14 CC0-1.0 https://github.com/mdn/data.git
spdx-license-ids 3.0.12 CC0-1.0 https://github.com/jslicense/spdx-license-ids.git
mousetrap 1.6.5 Apache-2.0 WITH LLVM-exception git://github.com/ccampbell/mousetrap.git
pako 1.0.11 (MIT AND Zlib) https://github.com/nodeca/pako.git
spdx-exceptions 2.3.0 CC-BY-3.0 https://github.com/kemitchell/spdx-exceptions.json.git
tslib 2.4.1 0BSD https://github.com/Microsoft/tslib.git
tslib 2.3.1 0BSD https://github.com/Microsoft/tslib.git
type-fest 1.4.0 (MIT OR CC0-1.0) https://github.com/sindresorhus/type-fest.git
webcabin-docker 2.2.5 MIT* Unknown
489 dependencies listed.
+78 -74
View File
@@ -2,7 +2,7 @@
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2018, The pgAdmin Development Team
# Copyright (C) 2013 - 2026, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
#########################################################################
@@ -27,47 +27,42 @@ RUN apk add --no-cache \
make \
nasm \
nodejs \
npm \
yarn \
zlib-dev
# Create the /pgadmin4 directory and copy the source into it. Explicitly
# remove the node_modules directory as we'll recreate a clean version, as well
# as various other files we don't want
# Create the /pgadmin4 directory and copy the source into it
COPY web /pgadmin4/web
RUN rm -rf /pgadmin4/web/*.log \
/pgadmin4/web/config_*.py \
/pgadmin4/web/node_modules \
/pgadmin4/web/regression \
`find /pgadmin4/web -type d -name tests` \
`find /pgadmin4/web -type f -name .DS_Store`
WORKDIR /pgadmin4/web
# Build the JS vendor code in the app-builder, and then remove the vendor source.
RUN export CPPFLAGS="-DPNG_ARM_NEON_OPT=0" && \
RUN --mount=type=bind,source=.git,target=/pgadmin4/.git \
--mount=type=tmpfs,target=node_modules \
--mount=type=tmpfs,target=pgadmin/static/js/generated/.cache \
export CPPFLAGS="-DPNG_ARM_NEON_OPT=0" && \
npm install -g corepack && \
corepack enable && \
yarn set version berry && \
yarn set version "$(node -p "require('./package.json').packageManager.split('@')[1]")" && \
yarn install && \
yarn run bundle && \
rm -rf node_modules \
yarn.lock \
rm -rf yarn.lock \
package.json \
.[^.]* \
babel.cfg \
webpack.* \
karma.conf.js \
./pgadmin/static/js/generated/.cache
jest.config.js \
babel.*
#########################################################################
# Next, create the base environment for Python
#########################################################################
FROM alpine:latest as env-builder
FROM python:3-alpine AS env-builder
# Install dependencies
COPY requirements.txt /
RUN apk add --no-cache \
make \
python3 \
py3-pip && \
RUN apk add --no-cache \
make && \
apk add --no-cache --virtual build-deps \
build-base \
openssl-dev \
@@ -78,9 +73,9 @@ RUN apk add --no-cache \
cargo \
zlib-dev \
libjpeg-turbo-dev \
libpng-dev \
python3-dev && \
python3 -m venv --system-site-packages --without-pip /venv && \
libpng-dev
COPY requirements.txt /
RUN python3 -m venv --system-site-packages --without-pip /venv && \
/venv/bin/python3 -m pip install --no-cache-dir -r requirements.txt && \
apk del --no-cache build-deps
@@ -88,10 +83,10 @@ RUN apk add --no-cache \
# Now, create a documentation build container for the Sphinx docs
#########################################################################
FROM env-builder as docs-builder
FROM env-builder AS docs-builder
# Install Sphinx
RUN /venv/bin/python3 -m pip install --no-cache-dir sphinx==6.1.1
RUN /venv/bin/python3 -m pip install --no-cache-dir sphinx
RUN /venv/bin/python3 -m pip install --no-cache-dir sphinxcontrib-youtube
# Copy the docs from the local tree. Explicitly remove any existing builds that
@@ -112,31 +107,16 @@ RUN rm -rf /pgadmin4/docs/en_US/_build/html/_static/*.png
# Create additional builders to get all of the PostgreSQL utilities
#########################################################################
FROM postgres:10-alpine as pg10-builder
FROM postgres:11-alpine as pg11-builder
FROM postgres:12-alpine as pg12-builder
FROM postgres:13-alpine as pg13-builder
FROM postgres:14-alpine as pg14-builder
FROM postgres:15-alpine as pg15-builder
FROM postgres:13-alpine AS pg13-builder
FROM postgres:14-alpine AS pg14-builder
FROM postgres:15-alpine AS pg15-builder
FROM postgres:16-alpine AS pg16-builder
FROM postgres:17-alpine AS pg17-builder
FROM postgres:18-alpine AS pg18-builder
FROM alpine:latest as tool-builder
FROM alpine:latest AS tool-builder
# Copy the PG binaries
COPY --from=pg10-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-10/
COPY --from=pg10-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-10/
COPY --from=pg10-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-10/
COPY --from=pg10-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-10/
COPY --from=pg11-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-11/
COPY --from=pg11-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-11/
COPY --from=pg11-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-11/
COPY --from=pg11-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-11/
COPY --from=pg12-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-12/
COPY --from=pg12-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-12/
COPY --from=pg12-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-12/
COPY --from=pg12-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-12/
COPY --from=pg13-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-13/
COPY --from=pg13-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-13/
COPY --from=pg13-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-13/
@@ -152,20 +132,54 @@ COPY --from=pg15-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-15/
COPY --from=pg15-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-15/
COPY --from=pg15-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-15/
COPY --from=pg16-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-16/
COPY --from=pg16-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-16/
COPY --from=pg16-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-16/
COPY --from=pg16-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-16/
COPY --from=pg17-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-17/
COPY --from=pg17-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-17/
COPY --from=pg17-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-17/
COPY --from=pg17-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-17/
COPY --from=pg18-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-18/
COPY --from=pg18-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-18/
COPY --from=pg18-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-18/
COPY --from=pg18-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-18/
#########################################################################
# Assemble everything into the final container.
#########################################################################
FROM alpine:latest
FROM python:3-alpine
# Install runtime dependencies
RUN apk update && apk upgrade && \
apk add \
bash \
postfix \
krb5-libs \
libcurl \
libjpeg-turbo \
shadow \
sudo \
tzdata \
libedit \
libldap \
libcap \
su-exec && \
rm -rf /var/cache/apk/*
# Copy in the Python packages
COPY --from=env-builder /venv /venv
# Copy in the tools
COPY --from=tool-builder /usr/local/pgsql /usr/local/
COPY --from=pg15-builder /usr/local/lib/libpq.so.5.15 /usr/lib/
RUN ln -s libpq.so.5.15 /usr/lib/libpq.so.5 && \
ln -s libpq.so.5.15 /usr/lib/libpq.so
COPY --from=pg18-builder /usr/local/lib/libpq.so.5.18 /usr/local/lib/libpq-oauth-18.so /usr/lib/liblz4.so.1.10.0 /usr/lib/
RUN ln -s libpq.so.5.18 /usr/lib/libpq.so.5 && \
ln -s libpq.so.5.18 /usr/lib/libpq.so && \
ln -s liblz4.so.1.10.0 /usr/lib/liblz4.so.1
WORKDIR /pgadmin4
ENV PYTHONPATH=/pgadmin4
@@ -173,41 +187,31 @@ ENV PYTHONPATH=/pgadmin4
# Copy in the code and docs
COPY --from=app-builder /pgadmin4/web /pgadmin4
COPY --from=docs-builder /pgadmin4/docs/en_US/_build/html/ /pgadmin4/docs
COPY pkg/docker/run_pgadmin.py /pgadmin4
COPY pkg/docker/gunicorn_config.py /pgadmin4
COPY pkg/docker/run_pgadmin.py pkg/docker/gunicorn_config.py /pgadmin4/
COPY pkg/docker/entrypoint.sh /entrypoint.sh
# License files
COPY LICENSE /pgadmin4/LICENSE
COPY DEPENDENCIES /pgadmin4/DEPENDENCIES
# Install runtime dependencies and configure everything in one RUN step
RUN apk add \
python3 \
py3-pip \
postfix \
krb5-libs \
libjpeg-turbo \
shadow \
sudo \
libedit \
libldap \
libcap && \
/venv/bin/python3 -m pip install --no-cache-dir gunicorn && \
# Configure everything in one RUN step
RUN /venv/bin/python3 -m pip install --no-cache-dir gunicorn==23.0.0 && \
find / -type d -name '__pycache__' -exec rm -rf {} + && \
useradd -r -u 5050 -g root -s /sbin/nologin pgadmin && \
mkdir -p /var/lib/pgadmin && \
chown pgadmin:root /var/lib/pgadmin && \
chmod g=u /var/lib/pgadmin && \
mkdir -p /run/pgadmin /var/lib/pgadmin && \
chown pgadmin:root /run/pgadmin /var/lib/pgadmin && \
chmod g=u /run/pgadmin /var/lib/pgadmin && \
touch /pgadmin4/config_distro.py && \
chown pgadmin:root /pgadmin4/config_distro.py && \
chmod g=u /pgadmin4/config_distro.py && \
chmod g=u /etc/passwd && \
setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/python3.10 && \
PYBIN="$(ls /usr/local/bin/python3.[0-9][0-9] 2>/dev/null | head -n1)" && \
cp "$PYBIN" /usr/local/bin/python3-cap && \
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/python3-cap && \
ln -s /usr/local/bin/python3-cap /venv/bin/python3-cap && \
echo "pgadmin ALL = NOPASSWD: /usr/sbin/postfix start" > /etc/sudoers.d/postfix && \
echo "pgadminr ALL = NOPASSWD: /usr/sbin/postfix start" >> /etc/sudoers.d/postfix
USER pgadmin
USER 5050
# Finish up
VOLUME /var/lib/pgadmin
+5 -1
View File
@@ -1,6 +1,10 @@
pgAdmin 4
=========
Copyright (C) 2013 - 2023, The pgAdmin Development Team
This software is released under the PostgreSQL licence.
-------------------------------------------------------------------------------
Copyright (C) 2013 - 2026, The pgAdmin Development Team
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement is
+108 -49
View File
@@ -26,8 +26,9 @@ CALL :CLEAN || EXIT /B 1
CALL :CREATE_VIRTUAL_ENV || EXIT /B 1
CALL :CREATE_PYTHON_ENV || EXIT /B 1
CALL :CREATE_RUNTIME_ENV || EXIT /B 1
CALL :GENERATE_SBOM || EXIT /B 1
CALL :CREATE_INSTALLER || EXIT /B 1
CALL :SIGN_INSTALLER || EXIT /B 1
CALL :VERIFY_SIGNATURE || EXIT /B 1
EXIT /B %ERRORLEVEL%
REM Main build sequence Ends
@@ -51,24 +52,23 @@ REM Main build sequence Ends
:SET_ENVIRONMENT
ECHO Configuring the environment...
IF "%PGADMIN_PYTHON_DIR%" == "" SET "PGADMIN_PYTHON_DIR=C:\Python38"
IF "%PGADMIN_PYTHON_DIR%" == "" SET "PGADMIN_PYTHON_DIR=C:\Python313"
IF "%PGADMIN_KRB5_DIR%" == "" SET "PGADMIN_KRB5_DIR=C:\Program Files\MIT\Kerberos"
IF "%PGADMIN_POSTGRES_DIR%" == "" SET "PGADMIN_POSTGRES_DIR=C:\Program Files (x86)\PostgreSQL\12"
IF "%PGADMIN_POSTGRES_DIR%" == "" SET "PGADMIN_POSTGRES_DIR=C:\Program Files\PostgreSQL\17"
IF "%PGADMIN_INNOTOOL_DIR%" == "" SET "PGADMIN_INNOTOOL_DIR=C:\Program Files (x86)\Inno Setup 6"
IF "%PGADMIN_VCREDIST_DIR%" == "" SET "PGADMIN_VCREDIST_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012"
IF "%PGADMIN_SIGNTOOL_DIR%" == "" SET "PGADMIN_SIGNTOOL_DIR=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64"
REM Set REDIST_NAME (the filename)
set "VCREDIST_FILE=vcredist_x64.exe"
IF "%PGADMIN_VCREDIST_DIR%" == "" SET "PGADMIN_VCREDIST_DIR=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.40.33807"
IF "%PGADMIN_VCREDIST_FILE%" == "" SET "PGADMIN_VCREDIST_FILE=vc_redist.x64.exe"
IF "%PGADMIN_SIGNTOOL_DIR%" == "" SET "PGADMIN_SIGNTOOL_DIR=C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64"
IF "%PGADMIN_WINDOWS_CSC%" == "" SET "PGADMIN_WINDOWS_CSC="
REM Set additional variables we need
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py') DO SET APP_MAJOR=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py') DO SET APP_MINOR=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py') DO SET APP_VERSION_SUFFIX=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\version.py') DO SET APP_MAJOR=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\version.py') DO SET APP_MINOR=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\version.py') DO SET APP_VERSION_SUFFIX=%%a
REM remove single quote from the string
SET APP_VERSION_SUFFIX=%APP_VERSION_SUFFIX:'=%
SET APP_NAME=""
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py') DO SET APP_NAME=%%a
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\branding.py') DO SET APP_NAME=%%a
FOR /f "tokens=1 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "print('%APP_NAME%'.lower().replace(' ', ''))"') DO SET APP_SHORTNAME=%%G
SET APP_VERSION=%APP_MAJOR%.%APP_MINOR%
SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%APP_VERSION_SUFFIX%-x64.exe
@@ -97,9 +97,14 @@ REM Main build sequence Ends
ECHO PostgreSQL directory: %PGADMIN_POSTGRES_DIR%
ECHO.
ECHO VC++ redist directory: %PGADMIN_VCREDIST_DIR%
ECHO VC++ redist file: %VCREDIST_FILE%
ECHO VC++ redist file: %PGADMIN_VCREDIST_FILE%
ECHO InnoTool directory: %PGADMIN_INNOTOOL_DIR%
ECHO signtool directory: %PGADMIN_SIGNTOOL_DIR%
IF "%PGADMIN_WINDOWS_CSC%" == "" (
ECHO Code signing certificate: [NONE - Signing disabled]
) ELSE (
ECHO Code signing certificate: %PGADMIN_WINDOWS_CSC%
)
ECHO.
ECHO App version: %APP_VERSION%
ECHO App version suffix: %APP_VERSION_SUFFIX%
@@ -216,7 +221,16 @@ REM Main build sequence Ends
ECHO Installing javascript dependencies...
CD "%BUILDROOT%\web"
SET "YARN_VERSION="
FOR /f "delims=" %%v IN ('node -p "require('./package.json').packageManager.split('@')[1]"') DO SET "YARN_VERSION=%%v"
IF "%YARN_VERSION%"=="" (
ECHO ERROR: Could not determine Yarn version from package.json packageManager field.
EXIT /B 1
)
CALL yarn set version berry || EXIT /B 1
CALL yarn set version %YARN_VERSION% || EXIT /B 1
CALL yarn install || EXIT /B 1
CALL npm rebuild || EXIT /B 1
ECHO Bundling javascript...
CALL yarn run bundle || EXIT /B 1
@@ -229,13 +243,14 @@ 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
ECHO Staging license files...
COPY "%WD%\LICENSE" "%BUILDROOT%\" > nul || EXIT /B 1
COPY "%WD%\DEPENDENCIES" "%BUILDROOT%\" > nul || EXIT /B 1
ECHO Creating config_distro.py
ECHO SERVER_MODE = False > "%BUILDROOT%\web\config_distro.py"
@@ -246,7 +261,7 @@ REM Main build sequence Ends
ECHO } >> "%BUILDROOT%\web\config_distro.py"
ECHO Building docs...
CALL pip install sphinx==6.1.1 || EXIT /B 1
CALL pip install sphinx || EXIT /B 1
CALL pip install sphinxcontrib-youtube || EXIT /B 1
MKDIR "%BUILDROOT%\docs\en_US\html"
CD "%WD%\docs\en_US"
@@ -258,51 +273,80 @@ REM Main build sequence Ends
RD /Q /S "%BUILDROOT%\docs\en_US\html\_sources" 1> nul 2>&1
ECHO Staging runtime components...
XCOPY /S /I /E /H /Y "%WD%\runtime\assets" "%BUILDROOT%\runtime\assets" > nul || EXIT /B 1
XCOPY /S /I /E /H /Y "%WD%\runtime\src" "%BUILDROOT%\runtime\src" > nul || EXIT /B 1
MKDIR "%BUILDROOT%\runtime\resources\app"
XCOPY /S /I /E /H /Y "%WD%\runtime\assets" "%BUILDROOT%\runtime\resources\app\assets" > nul || EXIT /B 1
XCOPY /S /I /E /H /Y "%WD%\runtime\src" "%BUILDROOT%\runtime\resources\app\src" > nul || EXIT /B 1
COPY "%WD%\runtime\package.json" "%BUILDROOT%\runtime\" > nul || EXIT /B 1
CD "%BUILDROOT%\runtime\"
CALL yarn install --production=true || EXIT /B 1
COPY "%WD%\runtime\package.json" "%BUILDROOT%\runtime\resources\app\" > nul || EXIT /B 1
COPY "%WD%\runtime\.yarnrc.yml" "%BUILDROOT%\runtime\resources\app\" > nul || EXIT /B 1
ECHO Downloading NWjs to %TMPDIR%...
REM Get a fresh copy of nwjs.
REM NOTE: The nw download servers seem to be very unreliable, so at the moment we're using wget which retries
CD "%BUILDROOT%\runtime\resources\app\"
REM YARN
REM CALL yarn --cwd "%TMPDIR%" add nw || EXIT /B
REM YARN END
SET "YARN_VERSION="
FOR /f "delims=" %%v IN ('node -p "require('./package.json').packageManager.split('@')[1]"') DO SET "YARN_VERSION=%%v"
IF "%YARN_VERSION%"=="" (
ECHO ERROR: Could not determine Yarn version from package.json packageManager field.
EXIT /B 1
)
CALL yarn set version berry || EXIT /B 1
CALL yarn set version %YARN_VERSION% || EXIT /B 1
CALL yarn workspaces focus --production || EXIT /B 1
ECHO Removing yarn cache...
RD /Q /S "%BUILDROOT%\runtime\resources\app\.yarn" 1> nul 2>&1
ECHO Downloading Electron to %TMPDIR%...
REM Get a fresh copy of electron.
REM WGET
FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_VERSION=%%i"
FOR /f "tokens=*" %%i IN ('npm info electron version') DO SET "ELECTRON_VERSION=%%i"
:GET_NW
wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
wget https://github.com/electron/electron/releases/download/v%ELECTRON_VERSION%/electron-v%ELECTRON_VERSION%-win32-x64.zip -O "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64.zip"
IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
tar -C "%TMPDIR%" -xvf "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" || EXIT /B 1
MKDIR "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64" || EXIT /B 1
tar -C "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64" -xvf "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64.zip" || EXIT /B 1
REM WGET END
REM YARN
REM XCOPY /S /I /E /H /Y "%TMPDIR%\node_modules\nw\nwjs\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
REM YARN END
REM XCOPY
XCOPY /S /I /E /H /Y "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
REM XCOPY END
REM WGET
XCOPY /S /I /E /H /Y "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1
REM WGET END
MOVE "%BUILDROOT%\runtime\electron.exe" "%BUILDROOT%\runtime\pgAdmin4.exe"
MOVE "%BUILDROOT%\runtime\nw.exe" "%BUILDROOT%\runtime\pgAdmin4.exe"
ECHO Downloading rcedit.exe...
wget https://github.com/electron/rcedit/releases/download/v2.0.0/rcedit-x64.exe -O "%TMPDIR%\rcedit-x64.exe"
ECHO Replacing executable icon...
CALL yarn --cwd "%TMPDIR%" add winresourcer || EXIT /B
"%TMPDIR%\node_modules\winresourcer\bin\Resourcer.exe" -op:upd -src:"%BUILDROOT%\runtime\pgAdmin4.exe" -type:Icongroup -name:IDR_MAINFRAME -file:"%WD%\pkg\win32\Resources\pgAdmin4.ico"
ECHO Replacing executable icon, description, version...
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-icon "%WD%\pkg\win32\Resources\pgAdmin4.ico"
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-version-string "FileDescription" "%APP_NAME%"
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-version-string "ProductName" "%APP_NAME%"
%TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-product-version "%APP_VERSION%""
IF NOT "%PGADMIN_WINDOWS_CSC%" == "" (
ECHO Attempting to sign the pgAdmin4.exe...
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /sm /n "%PGADMIN_WINDOWS_CSC%" /tr http://timestamp.digicert.com /td sha256 /fd sha1 /v "%BUILDROOT%\runtime\pgAdmin4.exe"
IF %ERRORLEVEL% NEQ 0 (
ECHO.
ECHO ************************************************************
ECHO * Failed to sign the pgAdmin4.exe
ECHO ************************************************************
PAUSE
)
) ELSE (
ECHO Skipping code signing ^(PGADMIN_WINDOWS_CSC is not set^)...
)
ECHO Staging PostgreSQL components...
COPY "%PGADMIN_POSTGRES_DIR%\bin\libpq.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
COPY "%PGADMIN_POSTGRES_DIR%\bin\libcrypto-1_1-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
COPY "%PGADMIN_POSTGRES_DIR%\bin\libssl-1_1-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
COPY "%PGADMIN_POSTGRES_DIR%\bin\libcrypto-*-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
COPY "%PGADMIN_POSTGRES_DIR%\bin\libssl-*-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" "%BUILDROOT%\runtime" > nul
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" "%BUILDROOT%\runtime" > nul
COPY "%PGADMIN_POSTGRES_DIR%\bin\zlib.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\liblz4.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\liblz4.dll" "%BUILDROOT%\runtime" > nul
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libzstd.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libzstd.dll" "%BUILDROOT%\runtime" > nul
COPY "%PGADMIN_POSTGRES_DIR%\bin\zlib1.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dump.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dumpall.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1L%
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_restore.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
@@ -310,7 +354,7 @@ REM Main build sequence Ends
ECHO Staging VC++ runtime...
MKDIR "%BUILDROOT%\installer" || EXIT /B 1
COPY "%PGADMIN_VCREDIST_DIR%\%VCREDIST_FILE%" "%BUILDROOT%\installer" > nul || EXIT /B 1
COPY "%PGADMIN_VCREDIST_DIR%\%PGADMIN_VCREDIST_FILE%" "%BUILDROOT%\installer" > nul || EXIT /B 1
CD %WD%
EXIT /B 0
@@ -328,13 +372,17 @@ REM Main build sequence Ends
ECHO Processing installer configuration script...
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_FULLVERSION -r """%APP_VERSION%"""
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_VERSION -r """v%APP_MAJOR%"""
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%PGADMIN_VCREDIST_DIRNAME%\%VCREDIST_FILE%"""
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%PGADMIN_VCREDIST_DIRNAME%\%PGADMIN_VCREDIST_FILE%"""
ECHO Cleaning up...
DEL /s "%WD%\pkg\win32\installer.iss.in_stage*" > nul
ECHO Creating windows installer using INNO tool...
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss" || EXIT /B 1
IF NOT "%PGADMIN_WINDOWS_CSC%" == "" (
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" "%WD%\pkg\win32\installer.iss" "/SpgAdminSigntool=%PGADMIN_SIGNTOOL_DIR%\signtool.exe sign /sm /n $q%PGADMIN_WINDOWS_CSC%$q /tr http://timestamp.digicert.com /td sha256 /fd sha1 /v $f" || EXIT /B 1
) ELSE (
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" "%WD%\pkg\win32\installer.iss" || EXIT /B 1
)
ECHO Renaming installer...
MOVE "%WD%\pkg\win32\Output\pgadmin4-setup.exe" "%DISTROOT%\%INSTALLERNAME%" > nul || EXIT /B 1
@@ -345,14 +393,25 @@ REM Main build sequence Ends
CD %WD%
EXIT /B 0
:GENERATE_SBOM
ECHO Generating SBOM...
CALL syft "%BUILDROOT%" -o cyclonedx-json > "%BUILDROOT%\sbom.json"
:SIGN_INSTALLER
ECHO Attempting to sign the installer...
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /tr http://timestamp.digicert.com "%DISTROOT%\%INSTALLERNAME%"
EXIT /B 0
:VERIFY_SIGNATURE
IF "%PGADMIN_WINDOWS_CSC%" == "" (
ECHO Skipping signature verification ^(PGADMIN_WINDOWS_CSC is not set^)...
EXIT /B 0
)
ECHO Verifying the installer signature...
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" verify /pa /v "%DISTROOT%\%INSTALLERNAME%"
IF %ERRORLEVEL% NEQ 0 (
ECHO.
ECHO ************************************************************
ECHO * Failed to sign the installer
ECHO * Failed to verify signature of the installer
ECHO ************************************************************
PAUSE
)
+19 -21
View File
@@ -2,29 +2,36 @@
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2018, The pgAdmin Development Team
# Copyright (C) 2013 - 2026, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
#########################################################################
SHELL = /bin/sh
APP_NAME := $(shell grep ^APP_NAME web/config.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]' | tr -d "'" | awk '{print tolower($$0)}')
APP_RELEASE := $(shell grep ^APP_RELEASE web/config.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]')
APP_REVISION := $(shell grep ^APP_REVISION web/config.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]')
APP_NAME := $(shell grep ^APP_NAME web/branding.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]' | tr -d "'" | awk '{print tolower($$0)}')
APP_RELEASE := $(shell grep ^APP_RELEASE web/version.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]')
APP_REVISION := $(shell grep ^APP_REVISION web/version.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]')
#########################################################################
# High-level targets
#########################################################################
# Include only platform-independent builds in all
all: docs pip src runtime
all: docs pip src
# Add BUILD_OPTS variable to pass arguments
appbundle:
./pkg/mac/build.sh
./pkg/mac/build.sh $(BUILD_OPTS)
install-node:
cd web && yarn install && npm rebuild
cd web && yarn install
install-python:
./tools/setup-python-env.sh
install-python-testing:
./tools/setup-python-env.sh --test
bundle:
cd web && yarn run bundle
@@ -36,7 +43,7 @@ linter:
cd web && yarn run linter
check: install-node bundle linter check-pep8
cd web && yarn run karma start --single-run && python regression/runtests.py
cd web && yarn run test:js-once && python regression/runtests.py
check-audit:
cd web && yarn run audit
@@ -71,28 +78,18 @@ check-feature: install-node bundle
cd web && python regression/runtests.py --pkg feature_tests
check-js: install-node linter
cd web && yarn run karma start --single-run
cd web && yarn run test:js-once
check-js-coverage:
cd web && yarn run test:karma-coverage
runtime-debug:
cd runtime && qmake CONFIG+=debug && make
runtime:
cd runtime && qmake CONFIG+=release && make
cd web && yarn run test:js-coverage
# Include all clean sub-targets in clean
clean: clean-appbundle clean-debian clean-dist clean-docs clean-node clean-pip clean-redhat clean-src clean-runtime
clean: clean-appbundle clean-debian clean-dist clean-docs clean-node clean-pip clean-redhat clean-src
rm -rf web/pgadmin/static/js/generated/*
rm -rf web/pgadmin/static/js/generated/.cache
rm -rf web/pgadmin/static/css/generated/*
rm -rf web/pgadmin/static/css/generated/.cache
clean-runtime:
if [ -f runtime/Makefile ]; then (cd runtime && make clean); fi;
rm -rf build-*
clean-appbundle:
rm -rf mac-build/
@@ -122,6 +119,7 @@ debian:
docker:
echo $(APP_NAME)
git checkout HEAD
docker build --pull -t ${APP_NAME} -t $(APP_NAME):latest -t $(APP_NAME):$(APP_RELEASE) -t $(APP_NAME):$(APP_RELEASE).$(APP_REVISION) .
docs:
+154 -163
View File
@@ -1,7 +1,7 @@
# pgAdmin 4
# pgAdmin 4
pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the
PostgreSQL (http://www.postgresql.org) database.
PostgreSQL (http://www.postgresql.org) database.
In the following documentation and examples, *$PGADMIN4_SRC/* is used to denote
the top-level directory of a copy of the pgAdmin source tree, either from a
@@ -9,168 +9,42 @@ tarball or a git checkout.
## Architecture
pgAdmin 4 is written as a web application in Python, using jQuery and Bootstrap
for the client side processing and UI. On the server side, Flask is being
utilised.
pgAdmin 4 is written as a web application with Python (Flask) on the server side
and ReactJS, HTML5 with CSS for the client side processing and UI.
Although developed using web technologies, pgAdmin 4 can be deployed either on
a web server using a browser, or standalone on a workstation. The runtime/
subdirectory contains an NWjs based runtime application intended to allow this,
which will execute the Python server and display the UI.
subdirectory contains an Electron-based runtime application intended to allow this,
which will fork a Python server process and display the UI.
## Building the Runtime
To build the runtime, the following packages must be installed:
* NodeJS 12+
* Yarn
Change into the runtime directory, and run *yarn install*. This will install the
dependencies required.
In order to use the runtime in a development environment, you'll need to copy
*dev_config.json.in* file to *dev_config.json*, and edit the paths to the Python
executable and *pgAdmin.py* file, otherwise the runtime will use the default
paths it would expect to find in the standard package for your platform.
You can then execute the runtime by running something like:
## Prerequisites
1. Install Node.js 20 and above (https://nodejs.org/en/download)
2. yarn (https://yarnpkg.com/getting-started/install)
3. Python 3.9 and above (https://www.python.org/downloads/)
4. PostgreSQL server (https://www.postgresql.org/download)
Start by enabling Corepack, if it isn't already;
this will add the yarn binary to your PATH:
```bash
node_modules/nw/nwjs/nw .
corepack enable
```
or on macOS:
```bash
node_modules/nw/nwjs/nwjs.app/Contents/MacOS/nwjs .
```
# Configuring the Python Environment
In order to run the Python code, a suitable runtime environment is required.
Python version 3.6 and later are currently supported. It is recommended that a
Python Virtual Environment is setup for this purpose, rather than using the
system Python environment. On Linux and Mac systems, the process is fairly
simple - adapt as required for your distribution:
1. Create a virtual environment in an appropriate directory. The last argument is
the name of the environment; that can be changed as desired:
```bash
$ python3 -m venv venv
```
2. Now activate the virtual environment:
```bash
$ source venv/bin/activate
```
3. Some of the components used by pgAdmin require a very recent version of *pip*,
so update that to the latest:
```bash
$ pip install --upgrade pip
```
4. Ensure that a PostgreSQL installation's bin/ directory is in the path (so
pg_config can be found for building psycopg2), and install the required
packages:
```bash
(venv) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
```
If you are planning to run the regression tests, you also need to install
additional requirements from web/regression/requirements.txt:
```bash
(venv) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
```
5. Create a local configuration file for pgAdmin. Edit
$PGADMIN4_SRC/web/config_local.py and add any desired configuration options
(use the config.py file as a reference - any settings duplicated in
config_local.py will override those in config.py). A typical development
configuration may look like:
```python
from config import *
# Debug mode
DEBUG = True
# App mode
SERVER_MODE = True
# Enable the test module
MODULE_BLACKLIST.remove('test')
# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = True
# Use a different config DB for each server mode.
if SERVER_MODE == False:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-desktop.db'
)
else:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-server.db'
)
```
This configuration allows easy switching between server and desktop modes
for testing.
6. The initial setup of the configuration database is interactive in server
mode, and non-interactive in desktop mode. You can run it either by
running:
```bash
(venv) $ python3 $PGADMIN4_SRC/web/setup.py
```
or by starting pgAdmin 4:
```bash
(venv) $ python3 $PGADMIN4_SRC/web/pgAdmin4.py
```
Whilst it is possible to automatically run setup in desktop mode by running
the runtime, that will not work in server mode as the runtime doesn't allow
command line interaction with the setup program.
At this point you will be able to run pgAdmin 4 from the command line in either
server or desktop mode, and access it from a web browser using the URL shown in
the terminal once pgAdmin has started up.
Setup of an environment on Windows is somewhat more complicated unfortunately,
please see *pkg/win32/README.txt* for complete details.
# Building the Web Assets
pgAdmin is dependent on a number of third party Javascript libraries. These,
along with it's own Javascript code, SCSS/CSS code and images must be
pgAdmin is dependent on a number of third-party JavaScript libraries. These,
along with its own JavaScript code, CSS code and images must be
compiled into a "bundle" which is transferred to the browser for execution
and rendering. This is far more efficient than simply requesting each
asset as it's needed by the client.
asset as it is needed by the client.
To create the bundle, you will need the 'yarn' package management tool to be
installed. Then, you can run the following commands on a *nix system to
download the required packages and build the bundle:
```bash
(venv) $ cd $PGADMIN4_SRC
(venv) $ make install-node
(venv) $ make bundle
$ cd $PGADMIN4_SRC
$ make install-node
$ make bundle
```
On Windows systems (where "make" is not available), the following commands
@@ -182,21 +56,123 @@ C:\$PGADMIN4_SRC\web> yarn install
C:\$PGADMIN4_SRC\web> yarn run bundle
```
# Creating pgAdmin themes
# Configuring the Python Environment
To create a pgAdmin theme, you need to create a directory under
*web/pgadmin/static/scss/resources*.
Copy the sample file *_theme.variables.scss.sample* to the new directory and
rename it to *_theme.variables.scss*. Change the desired hexadecimal values of
the colors and bundle pgAdmin. You can also add a preview image in the theme
directory with the name as *\<dir name>_preview.png*. It is recommended that the
preview image should not be larger in size as it may take time to load on slow
networks. Run the *yarn run bundle* and you're good to go. No other changes are
required, pgAdmin bundle will read the directory and create other required
entries to make them available in preferences.
In order to run the Python code, a suitable runtime environment is required.
Python version 3.9 and later are currently supported. It is recommended that a
Python virtual environment is set up for this purpose, rather than using the
system Python environment. On Linux and Mac systems, the process is fairly
simple - adapt as required for your distribution:
The name of the theme is derived from the directory name. Underscores (_) and
hyphens (-) will be replaced with spaces and the result will be camel cased.
1. Create a virtual environment in an appropriate directory. The last argument is
the name of the environment; that can be changed as desired:
```bash
$ python3 -m venv venv
```
2. Now activate the virtual environment:
```bash
$ source venv/bin/activate
```
3. Some of the components used by pgAdmin require a very recent version of *pip*,
so update that to the latest:
```bash
(venv) $ pip install --upgrade pip
```
4. Ensure that a PostgreSQL installation's bin/ directory is in the path (so
pg_config can be found for building psycopg3), and install the required
packages:
```bash
(venv) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
```
If you are planning to run the regression tests, you also need to install
additional requirements from web/regression/requirements.txt:
```bash
(venv) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
```
5. Create a local configuration file for pgAdmin. Edit
$PGADMIN4_SRC/web/config_local.py and add any desired configuration options
(use the config.py file as a reference - any settings duplicated in
config_local.py will override those in config.py). A typical development
configuration may look like:
```python
import os
import logging
# Change pgAdmin data directory
DATA_DIR = '/Users/myuser/.pgadmin_dev'
# Change pgAdmin server and port
DEFAULT_SERVER = '127.0.0.1'
DEFAULT_SERVER_PORT = 5051
# Switch between server and desktop mode
SERVER_MODE = True
# Change pgAdmin config DB path in case an external DB is used.
CONFIG_DATABASE_URI="postgresql://postgres:postgres@localhost:5436/pgadmin"
# Set up SMTP
MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USERNAME = 'user@gmail.com'
MAIL_PASSWORD = 'xxxxxxxxxx'
# Change log level
CONSOLE_LOG_LEVEL = logging.INFO
FILE_LOG_LEVEL = logging.INFO
# Use a different config DB for each server mode.
if SERVER_MODE == False:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-desktop.db'
)
else:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-server.db'
)
```
This configuration allows easy switching between server and desktop modes
for testing.
6. The initial setup of the configuration database is interactive in server
mode, and non-interactive in desktop mode. You can run it either by
running:
```bash
(venv) $ python3 $PGADMIN4_SRC/web/setup.py
```
or by starting pgAdmin 4:
```bash
(venv) $ python3 $PGADMIN4_SRC/web/pgAdmin4.py
```
Whilst it is possible to automatically run setup in desktop mode by running
the runtime, that will not work in server mode as the runtime doesn't allow
command line interaction with the setup program.
At this point you will be able to run pgAdmin 4 from the command line in either
server or desktop mode, and access it from a web browser using the URL shown in
the terminal once pgAdmin has started up.
Setup of an environment on Windows is somewhat more complicated unfortunately,
please see *pkg/win32/README.md* for complete details.
# Building the documentation
@@ -217,6 +193,21 @@ The docs can then be built using the Makefile in *$PGADMIN4_SRC*, e.g.
The output can be found in *$PGADMIN4_SRC/docs/en_US/_build/html/index.html*
## Building the Runtime
Change into the runtime directory, and run *yarn install*. This will install the
dependencies required.
In order to use the runtime in a development environment, you'll need to copy
*dev_config.json.in* file to *dev_config.json*, and edit the paths to the Python
executable and *pgAdmin.py* file, otherwise the runtime will use the default
paths it would expect to find in the standard package for your platform.
You can then execute the runtime by running something like:
```bash
yarn run start
```
# Building packages
Most packages can be built using the Makefile in $PGADMIN4_SRC, provided all
@@ -228,16 +219,16 @@ To build a source tarball:
(venv) $ make src
```
To build a PIP Wheel, activate either a Python 3 virtual environment, configured
To build a PIP Wheel, activate either a Python 3 virtual environment, configured
with all the required packages, and then run:
```bash
(venv) $ make pip
```
To build the macOS AppBundle, please see *pkg/mac/README*.
To build the macOS AppBundle, please see *pkg/mac/README.md*.
To build the Windows installer, please see *pkg/win32/README.txt*.
To build the Windows installer, please see *pkg/win32/README.md*.
# Create Database Migrations
In order to make changes to the SQLite DB, navigate to the 'web' directory:
@@ -266,7 +257,7 @@ See https://www.pgadmin.org/support/ for support options.
If you would like to report a security issue with pgAdmin, please email
**security (at) pgadmin (dot) org**.
Note that this address should only be used for reporting security issues
that you believe you've found in the design or code of pgAdmin, pgAgent,
and the pgAdmin website. It should not be used to ask security questions.
+82
View File
@@ -0,0 +1,82 @@
# Security Policy
## Supported Versions
Only the latest version receives security updates. Users are encouraged to upgrade to the latest stable release.
## Reporting a Vulnerability
We take security seriously and appreciate your efforts to responsibly disclose vulnerabilities. If you believe you have found a vulnerability, please follow the guidelines below to submit a report.
### **What to Include in Your Report**
To help us quickly understand and address the issue, please include the following sections in your report:
#### 1. **Summary**
- A brief description of the vulnerability.
#### 2. **Affected Versions**
- The version(s) of the project affected by the vulnerability.
- Example: "Affects versions 3.4.0 to 3.6.23."
#### 3. **Details**
- A detailed explanation of the vulnerability, including:
- How to reproduce the issue (step-by-step instructions).
- The code or component where the vulnerability exists.
- The expected vs. actual behavior.
#### 4. **Proof of Concept (PoC)**
- Provide a proof of concept to demonstrate the vulnerability. This could be:
- Code snippets.
- Screenshots or videos.
- A minimal reproducible example.
#### 5. **Patches (if applicable)**
- If you have a suggested fix or patch, include it in your report.
- Example: "Sanitize user input using `DOMPurify`."
#### 6. **Impact**
- Describe the potential impact of the vulnerability, such as:
- Remote Code Execution.
- CSRF.
- Data exposure.
- Denial of service.
### **What to Expect**
- **Acknowledgement**: You will receive an acknowledgement of your report within **48 hours**.
- **Timeline**: We will provide a timeline for investigating and addressing the issue.
- **Updates**: You will receive regular updates on the progress of the vulnerability resolution.
- **CVE ID**: If the vulnerability is confirmed, we will request a CVE ID to acknowledge the issue officially and include it in the release notes.
### **Out of Scope**
The following issues are considered out of scope for security reports:
- Vulnerabilities in outdated or unsupported versions.
- Issues related to non-security-impacting bugs or feature requests.
- Vulnerabilities requiring physical access to the device or social engineering.
## Security Updates
We are committed to providing timely security updates for supported versions. Here’s our process:
1. **Assessment**:
- All reported vulnerabilities are assessed for severity and impact.
2. **Patch Development**:
- Patches are developed and tested in a private repository to prevent premature disclosure.
3. **Release**:
- Security patches are released as soon as possible, along with a detailed advisory.
## Acknowledgments
We deeply appreciate the efforts of security researchers and users who help us improve the security of our project.
## Contact
For any questions or concerns regarding security, please contact us at `security@pgadmin.org`.
+249
View File
@@ -0,0 +1,249 @@
.. _ai_tools:
*******************
`AI Reports`:index:
*******************
**AI Reports** is a feature that provides AI-powered database analysis and insights
using Large Language Models (LLMs). Use the *Tools → AI Reports* menu to access
the various AI-powered reports.
The AI Reports feature allows you to:
* Generate security reports to identify potential security vulnerabilities and configuration issues.
* Create performance reports with optimization recommendations for queries and configurations.
* Perform design reviews to analyze database schema structure and suggest improvements.
**Prerequisites:**
Before using AI Reports, you must:
1. Ensure AI features are enabled in the server configuration (set ``LLM_ENABLED`` to ``True`` in ``config.py``).
2. Configure an LLM provider in :ref:`Preferences → AI <preferences>`.
**Note:**
* AI Reports using cloud providers (Anthropic, OpenAI) require an active internet connection.
Local providers (Ollama, Docker Model Runner) do not require internet access.
* API usage may incur costs depending on your LLM provider's pricing model.
Local providers (Ollama, Docker Model Runner) are free to use.
* The quality and accuracy of reports depend on the LLM provider and model configured.
Configuring AI Reports
**********************
To configure AI Reports, navigate to *File → Preferences → AI* (or click the *Settings*
button and select *AI*).
.. image:: images/preferences_ai.png
:alt: AI preferences
:align: center
Select your preferred LLM provider from the dropdown:
**Anthropic**
Use Claude models from Anthropic, or any Anthropic-compatible API provider.
* **API URL**: Custom API endpoint URL (leave empty for default: https://api.anthropic.com/v1).
* **API Key File**: Path to a file containing your Anthropic API key (obtain from https://console.anthropic.com/). This path refers to the filesystem where the pgAdmin server is running (e.g., inside the container if using Docker). The ``~`` prefix is expanded to the home directory of the user running the pgAdmin server process. Optional when using a custom URL with a provider that does not require authentication.
* **Model**: Select from available Claude models (e.g., claude-sonnet-4-20250514).
**OpenAI**
Use GPT models from OpenAI, or any OpenAI-compatible API provider (e.g.,
LiteLLM, LM Studio, EXO, or other local inference servers).
* **API URL**: Custom API endpoint URL (leave empty for default: https://api.openai.com/v1). Include the ``/v1`` path prefix if required by your provider.
* **API Key File**: Path to a file containing your OpenAI API key (obtain from https://platform.openai.com/). This path refers to the filesystem where the pgAdmin server is running (e.g., inside the container if using Docker). The ``~`` prefix is expanded to the home directory of the user running the pgAdmin server process. Optional when using a custom URL with a provider that does not require authentication.
* **Model**: Select from available GPT models (e.g., gpt-4).
**Ollama**
Use locally-hosted open-source models via Ollama. Requires a running Ollama instance.
* **API URL**: The URL of your Ollama server (default: http://localhost:11434).
* **Model**: Enter the name of the Ollama model to use (e.g., llama2, mistral).
**Docker Model Runner**
Use models running in Docker Desktop's built-in model runner (available in Docker Desktop 4.40+).
No API key is required.
* **API URL**: The URL of the Docker Model Runner API (default: http://localhost:12434).
* **Model**: Select from available models or enter a custom model name.
.. note:: You can also use the *OpenAI* provider with a custom API URL for any
OpenAI-compatible endpoint, including Docker Model Runner and other local
inference servers.
After configuring your provider, click *Save* to apply the changes.
Security Reports
****************
Security Reports analyze your PostgreSQL server, database, or schema for potential
security vulnerabilities and configuration issues.
To generate a security report:
1. In the *Browser* tree, select a server, database, or schema.
2. Choose *Tools → AI Reports → Security* from the menu, or right-click the
object and select *Security* from the context menu.
3. The report will be generated and displayed in a new tab.
.. image:: images/ai_security_report.png
:alt: AI security report
:align: center
**Security Report Scope:**
* **Server Level**: Analyzes server configuration, authentication settings, roles, and permissions.
* **Database Level**: Reviews database-specific security settings, roles with database access, and object permissions.
* **Schema Level**: Examines schema permissions, object ownership, and access controls.
Each report includes:
* **Security Findings**: Identified vulnerabilities or security concerns.
* **Risk Assessment**: Severity levels for each finding (Critical, High, Medium, Low).
* **Recommendations**: Specific actions to remediate security issues.
* **Best Practices**: General security recommendations for PostgreSQL.
Performance Reports
*******************
Performance Reports analyze query performance, configuration settings, and provide
optimization recommendations.
To generate a performance report:
1. In the *Browser* tree, select a server or database.
2. Choose *Tools → AI Reports → Performance* from the menu, or right-click the
object and select *Performance* from the context menu.
3. The report will be generated and displayed in a new tab.
**Performance Report Scope:**
* **Server Level**: Analyzes server configuration parameters, resource utilization, and overall server performance metrics.
* **Database Level**: Reviews database-specific configuration, query performance, index usage, and table statistics.
Each report includes:
* **Performance Metrics**: Key performance indicators and statistics.
* **Configuration Analysis**: Review of relevant configuration parameters.
* **Query Optimization**: Recommendations for improving slow queries.
* **Index Recommendations**: Suggestions for adding, removing, or modifying indexes.
* **Capacity Planning**: Resource utilization trends and recommendations.
Design Review Reports
*********************
Design Review Reports analyze your database schema structure and suggest
improvements for normalization, naming conventions, and best practices.
To generate a design review report:
1. In the *Browser* tree, select a database or schema.
2. Choose *Tools → AI Reports → Design* from the menu, or right-click the
object and select *Design* from the context menu.
3. The report will be generated and displayed in a new tab.
**Design Review Scope:**
* **Database Level**: Reviews overall database structure, schema organization, and cross-schema dependencies.
* **Schema Level**: Analyzes tables, views, functions, and other objects within the schema.
Each report includes:
* **Schema Structure Analysis**: Review of table structures, relationships, and constraints.
* **Normalization Review**: Recommendations for database normalization (1NF, 2NF, 3NF, etc.).
* **Naming Conventions**: Suggestions for consistent naming patterns.
* **Data Type Usage**: Review of data type choices and recommendations.
* **Index Design**: Analysis of indexing strategy.
* **Best Practices**: General PostgreSQL schema design recommendations.
Working with Reports
********************
All AI reports are displayed in a dedicated panel with the following features:
**Report Display**
Reports are formatted as Markdown and rendered with syntax highlighting for SQL code.
**Toolbar Actions**
* **Stop** - Cancel the current report generation. This is useful if the report
is taking too long or if you want to change parameters.
* **Regenerate** - Generate a new report for the same object. Useful when you
want to get a fresh analysis or if data has changed.
* **Download** - Download the report as a Markdown (.md) file. The filename
includes the report type, object name, and date for easy identification.
**Multiple Reports**
You can generate and view multiple reports simultaneously. Each report opens in
a new tab, allowing you to compare reports across different servers, databases,
or schemas.
**Report Management**
Each report tab can be closed individually by clicking the *X* in the tab.
Panel titles show the object name and report type for easy identification.
**Copying Content**
You can select and copy text from reports to use in documentation or share with
your team.
Troubleshooting
***************
**"AI features are disabled in the server configuration"**
The administrator has disabled AI features on the server. Contact your
pgAdmin administrator to enable the ``LLM_ENABLED`` configuration option.
**"Please configure an LLM provider in Preferences"**
You need to configure an LLM provider before using AI Reports. See *Configuring AI Reports* above.
**"Please connect to the server/database first"**
You must establish a connection to the server or database before generating reports.
**API Connection Errors**
* Verify your API key is correct (for Anthropic and OpenAI).
* Check your internet connection (for cloud providers).
* For Ollama, ensure the Ollama server is running and accessible.
* For Docker Model Runner, ensure Docker Desktop 4.40+ is running with the model runner enabled.
* Check that your firewall allows connections to the LLM provider's API.
**Report Generation Fails**
* Check the pgAdmin logs for detailed error messages.
* Verify the database connection is still active.
* Ensure the selected model is available for your account/subscription.
File diff suppressed because it is too large. Load diff
+96
View File
@@ -0,0 +1,96 @@
Auto-Update of pgAdmin 4 Desktop Application
********************************************
pgAdmin 4's desktop application includes an automated update system built using
Electron's ``autoUpdater`` module. This feature enables users to receive and install
updates seamlessly, ensuring they always have access to the latest features and security fixes.
Supported Platforms
===================
- **macOS:** Fully supported with automatic updates enabled by default
- **Windows:** Not supported
- **Linux:** Not supported
Update Process Overview
=======================
1. **Check for Updates:**
- Automatic check on application startup
- Manual check available via pgAdmin 4 menu > Check for Updates
- Uses Electron's ``autoUpdater`` API to query update server
2. **Download Process:**
- Updates download automatically when detected
- Progress shown via notifications
- Background download prevents interruption of work
3. **Installation Flow:**
- User prompted to Install & Restart or Restart Later when update ready
- Update applied during application restart
The flow chart for the update process is as follows:
.. image:: images/auto_update_desktop_app.png
:alt: Auto-update Desktop App
:align: center
User Interface Components
=========================
1. **Notification Types:**
- Update available
- Download progress
- Update ready to install
- Error notifications
2. **Menu Integration:**
- Check for Updates option in pgAdmin 4 menu
- Restart to Update option when update available
Error Handling
==============
The system includes comprehensive error handling:
1. **Network Errors:**
- Connection timeouts
- Download failures
- Server unavailability
2. **Installation Errors:**
- Corrupted downloads
3. **Recovery Mechanisms:**
- Fallback to manual update
- Error reporting to logs
Security Considerations
=======================
The update system implements below security measures:
1. **Secure Communication:**
- Protected update metadata
Platform-Specific Notes
=======================
1. **macOS:**
- Uses native update mechanisms
- Requires signed packages
References
==========
- `Electron autoUpdater API Documentation <https://www.electronjs.org/docs/latest/api/auto-updater>`_
+121 -37
View File
@@ -67,7 +67,7 @@ Use the fields in the *General* tab to specify parameters for the backup:
* Use the dropdown listbox next to *Rolename* to specify the role that owns the
backup.
Click the *Data/Objects* tab to continue. Use the fields in the *Data/Objects*
Click the *Data Options* tab to continue. Use the fields in the *Data Options*
tab to provide options related to data or pgAdmin objects that correspond to *pg_dump*.
.. image:: images/backup_sections.png
@@ -77,13 +77,13 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
* Move switches in the **Sections** field box to select a portion of the object
that will be backed up.
* Move the switch next to *Pre-data* towards right position to include all
* Move the switch next to *Pre-data* to the *Yes* position to include all
data definition items not included in the data or post-data item lists.
* Move the switch next to *Data* towards right position to backup actual table
* Move the switch next to *Data* to the *Yes* position to backup actual table
data, large-object contents, and sequence values.
* Move the switch next to *Post-data* towards right position to include
* Move the switch next to *Post-data* to the *Yes* position to include
definitions of indexes, triggers, rules, and constraints other than
validated check constraints.
@@ -94,13 +94,13 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
* Move switches in the **Type of objects** field box to specify details about
the type of objects that will be backed up.
* Move the switch next to *Only data* towards right position to limit the back
* Move the switch next to *Only data* to the *Yes* position to limit the back
up to data.
* Move the switch next to *Only schema* to limit the back up to schema-level
* Move the switch next to *Only schemas* to limit the back up to schema-level
database objects.
* Move the switch next to *Blobs* towards left position to exclude large
* Move the switch next to *Blobs* to the *No* position to exclude large
objects in the backup.
.. image:: images/backup_do_not_save.png
@@ -110,56 +110,123 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
* Move switches in the **Do not save** field box to select the objects that will
not be included in the backup.
* Move the switch next to *Owner* towards right position to exclude commands
* Move the switch next to *Owner* to the *Yes* position to exclude commands
that set object ownership.
* Move the switch next to *Privilege* towards right position to exclude
* Move the switch next to *Privileges* to the *Yes* position to exclude
commands that create access privileges.
* Move the switch next to *Tablespace* towards right position to exclude
* Move the switch next to *Tablespaces* to the *Yes* position to exclude
tablespaces.
* Move the switch next to *Unlogged table data* towards right position to
* Move the switch next to *Unlogged table data* to the *Yes* position to
exclude the contents of unlogged tables.
* Move the switch next to *Comments* towards right position to exclude
* Move the switch next to *Comments* to the *Yes* position to exclude
commands that set the comments. **Note:** This option is visible only for
database server greater than or equal to 11.
Click the *Options* tab to continue. Use these additional fields to specify
options like including ddl statements, verbose message or using set session
authorization corresponding to *pg_dump* options.
* Move the switch next to *Publications* to the *Yes* position to exclude
publications.
* Move the switch next to *Subscriptions* to the *Yes* position to exclude
subscriptions.
* Move the switch next to *Security labels* to the *Yes* position to exclude
Security labels.
* Move the switch next to *Toast compressions* to the *Yes* position to exclude
Toast compressions. **Note:** This option is visible only for
database server greater than or equal to 14.
* Move the switch next to *Table access methods* to the *Yes* position to exclude
Table access methods. **Note:** This option is visible only for
database server greater than or equal to 15.
.. image:: images/backup_queries.png
:alt: Queries option on backup dialog
:align: center
* Move switches in the **Queries** field box to specify the type of statements
that should be included in the backup.
Click the *Query Options* tab to continue. Use these additional fields to specify
the type of statements that should be included in the backup.
* Move the switch next to *Use Column Inserts* towards right position to dump
the data in the form of INSERT statements and include explicit column
names. Please note: this may make restoration from backup slow.
* Move the switch next to *Use Insert commands* towards right position to
* Move the switch next to *Use INSERT commands* to the *Yes* position to
dump the data in the form of INSERT statements rather than using a COPY
command. Please note: this may make restoration from backup slow.
* Move the switch next to *Include CREATE DATABASE statement* towards right
* Use the *Maximum rows per INSERT command* field to controls the maximum
number of rows per INSERT command. **Note:** This option is visible only for
database server greater than or equal to 12.
* Move the switch next to *On conflict do nothing to INSERT command* towards
right position to add ON CONFLICT DO NOTHING to INSERT command.
This option is not valid unless *Use INSERT commands*, *Use Column INSERTS*
or *Maximum rows per INSERT command* is also specified.
**Note:** This option is visible only for database server greater than or
equal to 12.
* Move the switch next to *Include CREATE DATABASE statement* to the *Yes*
position to include a command in the backup that creates a new database
when restoring the backup.
* Move the switch next to *Include DROP DATABASE statement* towards right
* Move the switch next to *Include DROP DATABASE statement* to the *Yes*
position to include a command in the backup that will drop any existing
database object with the same name before recreating the object during a
backup.
* Move the switch next to *Load Via Partition Root* towards right position,
* Move the switch next to *Include IF EXISTS clause* to the *Yes*
position to add an IF EXISTS clause to drop databases and other objects.
This option is not valid unless *Include DROP DATABASE statement* is also set.
.. image:: images/backup_table.png
:alt: Backup dialog tables section
:align: center
Click the *Table Options* tab to continue. Use the fields in the *Table Options*
tab related to tables that should be included in the backup.
* Move the switch next to *Use Column INSERTS* to the *Yes* position to dump
the data in the form of INSERT statements and include explicit column
names. Please note: this may make restoration from backup slow.
* Move the switch next to *Load via partition root* to the *Yes* position,
so when dumping a COPY or INSERT statement for a partitioned table, target
the root of the partitioning hierarchy which contains it rather than the
partition itself. **Note:** This option is visible only for database server
greater than or equal to 11.
* Move the switch next to *Enable row security* to the *Yes* position to
set row_security to on instead, allowing the user to dump the parts of the
contents of the table that they have access to. This option is relevant
only when dumping the contents of a table which has row security.
* Use the *Include table(s) and Children* field to dump the tables and any partitions
or inheritance child tables of the tables matching the pattern.
**Note:** This option is visible only for database server greater than or
equal to 16.
* The Exclude patterns field is utilized to exclude patterns in the following manner:
* Use the *Table(s)* field to not dump the tables matching the
pattern. Multiple patterns can be given separated by space.
* Use the *Table(s) data* field to not dump data for any tables
matching the pattern. Multiple patterns can be given separated by
spaces.
* Use the *Table(s) and children* field to not dump the tables and any
partitions or inheritance child tables of the tables matching the pattern.
**Note:** This option is visible only for database server greater than or
equal to 16.
* Use the *Table(s) data and children* field to not dump data for the
tables and any partitions or inheritance child tables of the tables matching
the table pattern. **Note:** This option is visible only for database server
greater than or equal to 16.
Click the *Options* tab to continue. Use the fields in the *Options*
tab to provide other backup options.
.. image:: images/backup_disable.png
:alt: Disable option on backup dialog
:align: center
@@ -167,11 +234,11 @@ authorization corresponding to *pg_dump* options.
* Move switches in the **Disable** field box to specify the type of statements
that should be excluded from the backup.
* Move the switch next to *Trigger* (active when creating a data-only backup)
towards right position to include commands that will disable triggers on the
* Move the switch next to *Triggers* (active when creating a data-only backup)
to the *Yes* position to include commands that will disable triggers on the
target table while the data is being loaded.
* Move the switch next to *$ quoting* towards right position to enable dollar
* Move the switch next to *$ quoting* to the *Yes* position to enable dollar
quoting within function bodies; if disabled, the function body will be
quoted using SQL standard string syntax.
@@ -182,19 +249,36 @@ authorization corresponding to *pg_dump* options.
* Move switches in the **Miscellaneous** field box to specify miscellaneous
backup options.
* Move the switch next to *With OIDs* towards right position to include object
identifiers as part of the table data for each table.
* Move the switch next to *Verbose messages* towards left position to instruct
* Move the switch next to *Verbose messages* to the *No* position to instruct
*pg_dump* to exclude verbose messages.
* Move the switch next to *Force double quotes on identifiers* towards right
* Move the switch next to *Force double quotes on identifiers* to the *Yes*
position to force the quoting of all identifiers.
* Move the switch next to *Use SET SESSION AUTHORIZATION* towards right
* Move the switch next to *Use SET SESSION AUTHORIZATION* to the *Yes*
position to include a statement that will use a SET SESSION AUTHORIZATION
command to determine object ownership (instead of an ALTER OWNER command).
* Use the *Exclude schema* field to not dump schemas whose name matches
pattern.
* Use the *Extra float digits* field to use the specified value when dumping
floating-point data, instead of the maximum available precision.
* Use the *Lock wait timeout* field to specify a timeout rather than waiting
indefinitely to acquire shared table locks at the beginning of the dump.
If unable to lock a table within the specified timeout, the operation will fail.
Click the *Objects* tab to continue.
.. image:: images/backup_object_selection.png
:alt: Select objects in backup dialog
:align: center
* Select the objects from tree to take backup of selected objects only.
* If Schema is selected then it will take the backup of that selected schema only.
* If any Table, View, Materialized View, Sequences, or Foreign Table is selected then it will take the backup of those selected objects.
When you’ve specified the details that will be incorporated into the pg_dump
command:
@@ -203,6 +287,6 @@ command:
* Click the *Cancel* button to exit without saving work.
pgAdmin will run the backup process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
pgAdmin will run the backup process in the background. You can view all the background
processes with their running status and logs on the :ref:`Processes <processes>`
tab.
+3 -3
View File
@@ -34,6 +34,6 @@ statements that should be included in the backup.
Click the *Backup* button to build and execute a command based on your
selections; click the *Cancel* button to exit without saving work.
pgAdmin will run the backup process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
pgAdmin will run the backup process in the background. You can view all the background
processes with their running status and logs on the :ref:`Processes <processes>`
tab.
+101 -34
View File
@@ -24,22 +24,27 @@ Use the fields in the *General* tab to specify the following:
connection privileges on the selected server. The role will be used for
authentication during the backup.
Click the *Data Options* tab to continue. Use the fields in the *Data Options*
tab to provide options related to data or pgAdmin objects that correspond to *pg_dumpall*.
.. image:: images/backup_server_objects.png
:alt: Type of objects option on backup server dialog
:align: center
Click the *Data/Objects* tab to continue. Use the fields in the *Data/Objects*
tab to provide options related to data or pgAdmin objects that correspond to *pg_dump*.
* Move switches in the **Type of objects** field box to specify details about
the type of objects that will be backed up.
* Move the switch next to *Only data* towards right position to limit the back
* Move the switch next to *Only data* to the *Yes* position to limit the back
up to data.
* Move the switch next to *Only schema* to limit the back up to schema-level
* Move the switch next to *Only schemas* to limit the back up to schema-level
database objects.
* Move the switch next to *Only tablespaces* to limit the back
up to tablespaces only.
* Move the switch next to *Only roles* to limit the back up to roles only.
.. image:: images/backup_server_do_not_save.png
:alt: Do not save option on backup server dialog
:align: center
@@ -47,42 +52,92 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
* Move switches in the **Do not save** field box to select the objects that will
not be included in the backup.
* Move the switch next to *Owner* towards right position to exclude commands
* Move the switch next to *Owner* to the *Yes* position to exclude commands
that set object ownership.
* Move the switch next to *Privilege* towards right position to exclude
* Move the switch next to *Role passwords* to the *Yes* position to exclude
passwords for roles.
* Move the switch next to *Privileges* to the *Yes* position to exclude
commands that create access privileges.
* Move the switch next to *Tablespace* towards right position to exclude
* Move the switch next to *Tablespaces* to the *Yes* position to exclude
tablespaces.
* Move the switch next to *Unlogged table data* towards right position to
* Move the switch next to *Unlogged table data* to the *Yes* position to
exclude the contents of unlogged tables.
* Move the switch next to *Comments* towards right position to exclude
* Move the switch next to *Comments* to the *Yes* position to exclude
commands that set the comments. **Note:** This option is visible only for
database server greater than or equal to 11.
* Move the switch next to *Publications* to the *Yes* position to exclude
publications.
* Move the switch next to *Subscriptions* to the *Yes* position to exclude
subscriptions.
* Move the switch next to *Security labels* to the *Yes* position to exclude
Security labels.
* Move the switch next to *Toast compressions* to the *Yes* position to exclude
Toast compressions. **Note:** This option is visible only for
database server greater than or equal to 14.
* Move the switch next to *Table access methods* to the *Yes* position to exclude
Table access methods. **Note:** This option is visible only for
database server greater than or equal to 15.
.. image:: images/backup_server_queries.png
:alt: Queries option on backup server dialog
:align: center
* Move switches in the **Queries** field box to specify the type of statements
that should be included in the backup.
Click the *Query Options* tab to continue. Use these additional fields to specify
the type of statements that should be included in the backup.
* Move the switch next to *Use Column Inserts* towards right position to dump
the data in the form of INSERT statements and include explicit column
names. Please note: this may make restoration from backup slow.
* Move the switch next to *Use INSERT commands* to the *Yes* position to
dump the data in the form of INSERT statements rather than using a COPY
command. Please note: this may make restoration from backup slow.
* Move the switch next to *Use Insert commands* towards right position to dump
the data in the form of INSERT statements rather than using a COPY command.
Please note: this may make restoration from backup slow.
* Use the *Maximum rows per INSERT command* field to controls the maximum
number of rows per INSERT command. **Note:** This option is visible only for
database server greater than or equal to 12.
* Move the switch next to *Include DROP DATABASE statement* towards right
* Move the switch next to *On conflict do nothing to INSERT command* towards
right position to add ON CONFLICT DO NOTHING to INSERT command.
This option is not valid unless *Use INSERT commands*, *Use Column INSERTS*
or *Maximum rows per INSERT command* is also specified.
**Note:** This option is visible only for database server greater than or
equal to 12.
* Move the switch next to *Include DROP DATABASE statement* to the *Yes*
position to include a command in the backup that will drop any existing
database object with the same name before recreating the object during a
backup.
* Move the switch next to *Include IF EXISTS clause* to the *Yes*
position to add an IF EXISTS clause to drop databases and other objects.
This option is not valid unless *Include DROP DATABASE statement* is also set.
.. image:: images/backup_server_table.png
:alt: Backup dialog tables section
:align: center
Click the *Table Options* tab to continue. Use the fields in the *Table Options*
tab related to tables that should be included in the backup.
* Move the switch next to *Use Column INSERTS* to the *Yes* position to dump
the data in the form of INSERT statements and include explicit column
names. Please note: this may make restoration from backup slow.
* Move the switch next to *Load via partition root* to the *Yes* position,
so when dumping a COPY or INSERT statement for a partitioned table, target
the root of the partitioning hierarchy which contains it rather than the
partition itself. **Note:** This option is visible only for database server
greater than or equal to 11.
Click the *Options* tab to continue. Use the fields in the *Options*
tab to provide other backup options.
.. image:: images/backup_server_disable.png
:alt: Disable option on backup server dialog
@@ -91,11 +146,11 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
* Move switches in the **Disable** field box to specify the type of statements
that should be excluded from the backup.
* Move the switch next to *Trigger* (active when creating a data-only backup)
towards right position to include commands that will disable triggers on the
* Move the switch next to *Triggers* (active when creating a data-only backup)
to the *Yes* position to include commands that will disable triggers on the
target table while the data is being loaded.
* Move the switch next to *$ quoting* towards right position to enable dollar
* Move the switch next to *$ quoting* to the *Yes* position to enable dollar
quoting within function bodies; if disabled, the function body will be
quoted using SQL standard string syntax.
@@ -106,22 +161,34 @@ tab to provide options related to data or pgAdmin objects that correspond to *pg
* Move switches in the **Miscellaneous** field box to specify miscellaneous
backup options.
* Move the switch next to *With OIDs* towards right position to include object
identifiers as part of the table data for each table.
* Move the switch next to *Verbose messages* to the *No* position to instruct
*pg_dumpall* to exclude verbose messages.
* Move the switch next to *Verbose messages* towards left position to instruct
*pg_dump* to exclude verbose messages.
* Move the switch next to *Force double quotes on identifiers* towards right
* Move the switch next to *Force double quotes on identifiers* to the *Yes*
position to force the quoting of all identifiers.
* Move the switch next to *Use SET SESSION AUTHORIZATION* towards right
* Move the switch next to *Use SET SESSION AUTHORIZATION* to the *Yes*
position to include a statement that will use a SET SESSION AUTHORIZATION
command to determine object ownership (instead of an ALTER OWNER command).
Click the *Backup* button to build and execute a command based on your
selections; click the *Cancel* button to exit without saving work.
* Use the *Exclude database* field to not dump databases whose name matches
pattern.
pgAdmin will run the backup process in background. You can view all the background
process with there running status and logs on the :ref:`Processes <processes>`
tab
* Use the *Extra float digits* field to use the specified value when dumping
floating-point data, instead of the maximum available precision.
* Use the *Lock wait timeout* field to specify a timeout rather than waiting
indefinitely to acquire shared table locks at the beginning of the dump.
If unable to lock a table within the specified timeout, the operation will fail.
When you’ve specified the details that will be incorporated into the pg_dumpall
command:
* Click the *Backup* button to build and execute a command that builds a backup
based on your selections on the *Backup Server* dialog.
* Click the *Cancel* button to exit without saving work.
pgAdmin will run the backup process in the background. You can view all the background
processes with their running status and logs on the :ref:`Processes <processes>`
tab.
+1 -1
View File
@@ -14,7 +14,7 @@ root = os.path.realpath(
if sys.path[0] != root:
sys.path.insert(0, root)
import config
from pgadmin.utils import PgAdminModule
target = open('code_snippets.rst', 'w')
+3
View File
@@ -13,6 +13,9 @@ Please consider the following guidelines when selecting a password:
* Ensure that your password is an adequate length; 6 characters should be the
absolute minimum number of characters in the password.
* The minimum password length is set by default to six characters. This value
can be changed by setting the *PASSWORD_LENGTH_MIN* option to desired length
in pgAdmin configuration; see :ref:`config_py` for more information.
* Ensure that your password is not open to dictionary attacks. Use a mixture of
upper and lower case letters and numerics, and avoid words or names. Consider
using the first letter from each word in a phrase that you will remember
+3
View File
@@ -13,6 +13,9 @@ Please consider the following guidelines when selecting a password:
* Ensure that your password is an adequate length; 6 characters should be the
absolute minimum number of characters in the password.
* The minimum password length is set by default to six characters. This value
can be changed by setting the *PASSWORD_LENGTH_MIN* option to desired length
in pgAdmin configuration; see :ref:`config_py` for more information.
* Ensure that your password is not open to dictionary attacks. Use a mixture of
upper and lower case letters and numerics, and avoid words or names. Consider
using the first letter from each word in a phrase that you will remember
+2
View File
@@ -8,6 +8,7 @@ Use *Clear Saved Password* functionality to clear the saved password for the
database server.
.. image:: images/clear_saved_password.png
:alt: Clear saved password
:align: center
*Clear Saved Password* shows in the context menu for the selected server as well
@@ -17,6 +18,7 @@ Use *Clear SSH Tunnel Password* functionality to clear the saved password of SSH
Tunnel to connect to the database server.
.. image:: images/clear_tunnel_password.png
:alt: Clear SSH tunnel password
:align: center
*Clear SSH Tunnel Password* shows in the context menu for the selected server as
+8 -9
View File
@@ -1,12 +1,12 @@
.. _cloud_aws_rds:
******************************************
`Amazon AWS RDS Cloud Deployment`:index:
`Amazon RDS Cloud Deployment`:index:
******************************************
To deploy a PostgreSQL server on the Amazon AWS cloud, follow the below steps.
To deploy a PostgreSQL server on the Amazon cloud, follow the below steps.
.. image:: images/cloud_aws_provider.png
.. image:: images/cloud_provider_for_postgresql.png
:alt: Cloud Deployment Provider
:align: center
@@ -32,8 +32,7 @@ Use the fields from the Instance Specification tab to specify the Instance
details.
* Use the *Instance name* field to add an instance name for the PostgreSQL
server; the name specified will be displayed in the *Browser* tree control
too.
server; the name specified will be displayed in the *Object Explorer* too.
* Use the *Public IP* field to specify the IP Address range for permitting the
inbound traffic.
@@ -63,8 +62,8 @@ details.
Use the fields from the Database Details tab to specify the Instance details.
* Use the drop-down list box in the *Server group* field to select the parent
node for the server; the server will be displayed in the *Browser* tree
control within the specified group.
node for the server; the server will be displayed in the *Object Explorer*
within the specified group.
* Use the *Database name* field to add the database name for the PostgreSQL
server.
@@ -92,8 +91,8 @@ button to deploy the instance on Amazon RDS.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background process with there running status and logs
on the :ref:`Processes <processes>` tab
You can view all the background processes with their running status and logs
on the :ref:`Processes <processes>` tab.
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
+122
View File
@@ -0,0 +1,122 @@
.. cloud_azure_database:
******************************************
`Azure Database Cloud Deployment`:index:
******************************************
To deploy a PostgreSQL server on the Azure Database, follow the below steps.
.. image:: images/cloud_provider_for_postgresql.png
:alt: Cloud Deployment
:align: center
Once you launch the tool, select the Azure Database option.
Click on the *Next* button to proceed further.
.. image:: images/cloud_azure_credentials.png
:alt: Cloud Deployment
:align: center
In the Credentials dialog, select authentication method either interactive
browser or Azure CLI. Azure CLI will use the currently logged in identity
through the Azure CLI on the local machine. Interactive Browser will
open a browser window to authenticate a user interactively.
Use the *Azure tenant* id to specify Azure tenant ID against which user
is authenticated.
Clicking the *Click here to authenticate yourself to Microsoft Azure*
button, user will be redirected to the Microsoft Azure authentication page in a
new browser tab if the Interactive Browser option is selected.
Azure CLI authentication can be used only in Desktop mode.
Once authentication is completed, click on the next button to proceed.
.. image:: images/cloud_azure_instance.png
:alt: Cloud Deployment
:align: center
Use the fields from the Instance Specification tab to specify the Instance
details.
* Use the *Cluster name* field to add a name for the PostgreSQL
server; the name specified will be displayed in the *Object Explorer* too.
* Select a subscription from the *Subscription* options which are populated based
on user access levels in Azure portal.
* Select the resource group from *Resource Group* dropdown under which the
PostgreSQL instance will be created.
* Select the location to deploy PostgreSQL instance from *Location*
options.
* Select the availability zone in specified region to deploy PostgreSQL
instance from *Availability zone* options.
* Use *Database version* options to specify PostgreSQL database version.
* Use the *Instance class* field to allocate the computational, network, and
memory capacity required by planned workload of this DB instance.
* Use the *Instance type* field to select the instance type.
* Use the *Storage size* option to specify the storage capacity.
.. image:: images/cloud_azure_network.png
:alt: Cloud Deployment
:align: center
* Use the *Public IP* field to specify the List of IP Addresses or range of
IP Addresses (start IP Address - end IP address) from which inbound traffic
should be accepted. Add multiple IP addresses/ranges separated with commas,
for example: "192.168.0.50, 192.168.0.100 - 192.168.0.200"
* Use *Zone redundant high availability* option to specify High Availability
option. Zone redundant high availability deploys a standby replica in a
different zone.
The Burstable instance type does not support high availability.
.. image:: images/cloud_azure_database.png
:alt: Cloud Deployment
:align: center
Use the fields from the Database Details tab to specify the PostgreSQL database details.
* Use the drop-down list in the *pgAdmin server group* field to select the parent
node for the server; the server will be displayed in the *Object Explorer*
within the specified group.
* Use the *Admin username* field to add the database name for the PostgreSQL
server.
* Use the *Password* field to provide a password that will be supplied when
authenticating with the server.
* Use the *Confirm password* field to repeat the password.
Click on the next button to proceed.
.. image:: images/cloud_azure_review.png
:alt: Cloud Deployment
:align: center
At the end, review the instance details that you provided. Click on Finish
button to deploy the instance on Azure Database.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background processes with their running status and logs
on the :ref:`Processes <processes>` tab.
.. image:: images/cloud_azure_bg_process_watcher.png
:alt: Cloud Deployment
:align: center
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
.. image:: images/cloud_deployment_tree.png
:alt: Cloud Deployment Provider
:align: center
-122
View File
@@ -1,122 +0,0 @@
.. _cloud_azure_postgresql:
******************************************
`Azure PostgreSQL Cloud Deployment`:index:
******************************************
To deploy a PostgreSQL server on the Azure cloud, follow the below steps.
.. image:: images/cloud_azure_provider.png
:alt: Cloud Deployment
:align: center
Once you launch the tool, select the Azure PostgreSQL option.
Click on the *Next* button to proceed further.
.. image:: images/cloud_azure_credentials.png
:alt: Cloud Deployment
:align: center
In the Credentials dialog, select authentication method either interactive
browser or Azure CLI. Azure CLI will use the currently logged in identity
through the Azure CLI on the local machine. Interactive Browser will
open a browser window to authenticate a user interactively.
Use the *Azure tenant* id to specify Azure tenant ID against which user
is authenticated.
Clicking the *Click here to authenticate yourself to Microsoft Azure*
button, user will be redirected to the Microsoft Azure authentication page in a
new browser tab if the Interactive Browser option is selected.
Azure CLI authentication can be used only in Desktop mode.
Once authentication is completed, click on the next button to proceed.
.. image:: images/cloud_azure_instance.png
:alt: Cloud Deployment
:align: center
Use the fields from the Instance Specification tab to specify the Instance
details.
* Use the *Cluster name* field to add a name for the PostgreSQL
server; the name specified will be displayed in the *Browser* tree control too.
* Select a subscription from the *Subscription* options which are populated based
on user access levels in Azure portal.
* Select the resource group from *Resource Group* dropdown under which the
PostgreSQL instance will be created.
* Select the location to deploy PostgreSQL instance from *Location*
options.
* Select the availability zone in specified region to deploy PostgreSQL
instance from *Availability zone* options.
* Use *Database version* options to specify PostgreSQL database version.
* Use the *Instance class* field to allocate the computational, network, and
memory capacity required by planned workload of this DB instance.
* Use the *Instance type* field to select the instance type.
* Use the *Storage size* option to specify the storage capacity.
.. image:: images/cloud_azure_network.png
:alt: Cloud Deployment
:align: center
* Use the *Public IP* field to specify the List of IP Addresses or range of
IP Addresses (start IP Address - end IP address) from which inbound traffic
should be accepted. Add multiple IP addresses/ranges separated with commas,
for example: "192.168.0.50, 192.168.0.100 - 192.168.0.200"
* Use *Zone redundant high availability* option to specify High Availability
option. Zone redundant high availability deploys a standby replica in a
different zone.
The Burstable instance type does not support high availability.
.. image:: images/cloud_azure_database.png
:alt: Cloud Deployment
:align: center
Use the fields from the Database Details tab to specify the PostgreSQL database details.
* Use the drop-down list in the *pgAdmin server group* field to select the parent
node for the server; the server will be displayed in the *Browser* tree
control within the specified group.
* Use the *Admin username* field to add the database name for the PostgreSQL
server.
* Use the *Password* field to provide a password that will be supplied when
authenticating with the server.
* Use the *Confirm password* field to repeat the password.
Click on the next button to proceed.
.. image:: images/cloud_azure_review.png
:alt: Cloud Deployment
:align: center
At the end, review the instance details that you provided. Click on Finish
button to deploy the instance on Azure PostgreSQL.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background process with there running status and logs
on the :ref:`Processes <processes>` tab
.. image:: images/cloud_azure_bg_process_watcher.png
:alt: Cloud Deployment
:align: center
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
.. image:: images/cloud_deployment_tree.png
:alt: Cloud Deployment Provider
:align: center
+8 -7
View File
@@ -1,11 +1,12 @@
.. _cloud_deployment:
******************************
`Cloud Deployment`:index:
******************************
*************************************
`PostgreSQL Cloud Deployment`:index:
*************************************
A PostgreSQL server can be deployed on the Amazon AWS and EDB BigAnimal
cloud using this module. In future more cloud options will be available.
A PostgreSQL server can be deployed on the Amazon, Azure, Google cloud
using this module. In future more cloud provider options will be
available.
To launch the *Cloud Deployment...* tool, right click on the *Server Group* or
*Server* of the tree control, and select *Deploy a Cloud Instance* from the
@@ -15,5 +16,5 @@ To launch the *Cloud Deployment...* tool, right click on the *Server Group* or
:maxdepth: 2
cloud_aws_rds
cloud_edb_biganimal
cloud_azure_postgresql
cloud_azure_database
cloud_google_cloud_sql
-108
View File
@@ -1,108 +0,0 @@
.. _cloud_edb_biganimal:
******************************************
`EDB BigAnimal Cloud Deployment`:index:
******************************************
To deploy a PostgreSQL server on the EDB BigAnimal cloud, follow the below steps.
.. image:: images/cloud_biganimal_provider.png
:alt: Cloud Deployment Provider
:align: center
Once you launch the tool, select the EDB BigAnimal option.
Click on the *Next* button to proceed further.
.. image:: images/cloud_biganimal_credentials.png
:alt: Cloud Deployment Provider
:align: center
The next steps is to authenticate the user to EDB BigAninal.
Click the given button to authenticate, by clicking the button, the user
will be redirected to the new tab for the verification.
Once you confirm the one time code, the pgAdmin will automatically detect it
and the next button will be enabled. To proceed further, click on the next button.
.. image:: images/cloud_biganimal_cluster.png
:alt: Cloud Deployment Provider
:align: center
* Use the *Cluster type* field to choose a cluster type.
* Use the *No. of Standby Replicas* field to specify the replicas if you have selected the High Availability cluster.
* Use the *Cluster provider* field to coose the provider.
.. image:: images/cloud_biganimal_instance.png
:alt: Cloud Deployment Provider
:align: center
Use the fields from the Instance Specification tab to specify the Instance
details.
* Use the *Cluster name* field to add a cluster name for the PostgreSQL
server; the name specified will be displayed in the *Browser* tree control
too.
* Use the *Region* field to select the region.
* Use the *Public IP range* field to specify the IP Address range for permitting the
inbound traffic. Leave it blank for 0.0.0.0/0
* Use the *Instance type* field to select the instance type.
* Use the *Instance series* field to select the instance series.
* Use the *Instance size* field to allocate the computational, network, and
memory capacity required by planned workload of this DB instance.
* Use the *Volume type* field to select the instance storage type.
* Use the *Volume properties* field to specify the storage capacity. This field is specific to Azure.
* Use the *Volume size* field to specify the storage size. This field is specific to AWS.
* Use the *Volume IOPS* field to specify the storage IOPS. This field is specific to AWS.
.. image:: images/cloud_biganimal_database.png
:alt: Cloud Deployment Provider
:align: center
Use the fields from the Database Details tab to specify the Instance details.
* Use the drop-down list box in the *Server group* field to select the parent
node for the server; the server will be displayed in the *Browser* tree
control within the specified group.
* Use the *Database type* field to specify the PostgreSQL
type, EnterpriseDB PostgreSQL Advanced Server or PostgreSQL.
* Use the *PostgreSQL version* field to select the database version.
* Use the *Database Password* field to provide a password that will be supplied when
authenticating with the server.
* Use the *Confirm password* field to repeat the password.
.. image:: images/cloud_biganimal_review.png
:alt: Cloud Deployment Provider
:align: center
At the end, review the Cluster details that you provided. Click on Finish
button to deploy the instance on EDB BigAnimal.
.. image:: images/cloud_deployment_tree.png
:alt: Cloud Deployment Provider
:align: center
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background process with there running status and logs
on the :ref:`Processes <processes>` tab
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
+117
View File
@@ -0,0 +1,117 @@
.. cloud_google_cloud_sql:
************************************************
`Google Cloud SQL Deployment`:index:
************************************************
To deploy a PostgreSQL server on the Google Cloud SQL, follow the below steps.
.. image:: images/cloud_provider_for_postgresql.png
:alt: Cloud Deployment
:align: center
Once you launch the tool, select the Google Cloud SQL option.
Click on the *Next* button to proceed further.
.. image:: images/cloud_google_credentials.png
:alt: Cloud Deployment
:align: center
In the Credentials dialog, select client secret file to authenticate
using google.You can download a client secret which is json formatted file
from google cloud console once OAuth2 client ID is created.
.. note:: While creating client OAuth client ID, select Desktop App as application type.
Refer `this <https://support.google.com/cloud/answer/6158849?hl=en/>`_ link for creating client secret.
Clicking the *Click here to authenticate yourself to Google*
button, user will be redirected to the Google authentication page in a
new browser tab.
Once authentication is completed, click on the next button to proceed.
.. image:: images/cloud_google_instance.png
:alt: Cloud Deployment
:align: center
Use the fields from the Instance Specification tab to specify the Instance
details.
* Use the *Cluster name* field to add a name for the PostgreSQL
server; the name specified will be displayed in the *Object Explorer* too.
* Select the project from *project* dropdown under which the
PostgreSQL instance will be created.
* Select the location to deploy PostgreSQL instance from *Location*
options.
* Select the availability zone in specified region to deploy PostgreSQL
instance from *Availability zone* options.
* Use *Database version* options to specify PostgreSQL database version.
* Use the *Instance class* field to allocate the computational and
memory capacity required by planned workload of this DB instance.
* Use the *Instance type* field to select the instance type.
* Specify storage type by selecting option from *Storage type*.
* Use the *Storage capacity* option to specify the storage capacity.
.. image:: images/cloud_google_network.png
:alt: Cloud Deployment
:align: center
* Use the *Public IP* field to specify the list of IP address range
for allowed inbound traffic, for example: 127.0.0.1/32. Add multiple
IP addresses/ranges separated with commas.
* Use the *High Availability* option to specify High Availability
option. This option creates a standby in a select Secondary
Availability Zone.
* Select the secondary availability zone for high availability
from *Secondary Availability zone* options.
.. image:: images/cloud_google_database.png
:alt: Cloud Deployment
:align: center
Use the fields from the Database Details tab to specify the PostgreSQL database details.
* Use the drop-down list in the *pgAdmin server group* field to select the parent
node for the server; the server will be displayed in the *Object Explorer*
within the specified group.
* Admin username field will be default to postgres.
server.
* Use the *Password* field to provide a password that will be supplied when
authenticating with the server.
* Use the *Confirm password* field to repeat the password.
Click on the next button to proceed.
.. image:: images/cloud_google_review.png
:alt: Cloud Deployment
:align: center
At the end, review the instance details that you provided. Click on Finish
button to deploy the instance on Azure PostgreSQL.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
You can view all the background processes with their running status and logs
on the :ref:`Processes <processes>` tab.
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
.. image:: images/cloud_google_deployment_tree.png
:alt: Cloud Deployment Provider
:align: center
+5 -6
View File
@@ -5,14 +5,14 @@
**********************
The bulk of pgAdmin is a Python web application written using the Flask framework
on the backend, and HTML5 with CSS3, Bootstrap and jQuery on the front end. A
on the backend, and HTML5 with CSS3,ReactJS on the front end. A
desktop runtime is also included for users that prefer a desktop application to
a web application, which is written using NWjs (Node Webkit).
a web application, which is written using Electron.
Runtime
*******
The runtime is based on NWjs which integrates a browser and the Python server
The runtime is based on Electron which integrates a browser and the Python server
creating a standalone application. The source code can be found in the
**/runtime** directory in the source tree.
@@ -194,7 +194,7 @@ Nodes
*****
Nodes are very similar to modules, it represents an individual node or,
collection object on the browser treeview. To recognised as a node module, a
collection object on the object explorer treeview. To recognised as a node module, a
Python package (along with javascript modules) must be created. This must:
1) Be placed within the **web/pgadmin/browser/** directory, and
@@ -207,8 +207,7 @@ Front End
pgAdmin uses javascript extensively for the front-end implementation. It uses
require.js to allow the lazy loading (or, say load only when required),
bootstrap and MaterialUI for UI look and feel, React for generating
properties/create dialog for selected node. We have
ReactJS with CSS and MaterialUI for UI look and feel. We have
divided each module in small chunks as much as possible. Not all javascript
modules are required to be loaded (i.e. loading a javascript module for
database will make sense only when a server node is loaded completely.) Please
+1 -1
View File
@@ -16,7 +16,7 @@ review process for any changes submitted for inclusion in pgAdmin.
bulk updates every year). The start date should always be 2013, and the end year
the current year, e.g.
Copyright (C) 2013 - 2023, The pgAdmin Development Team
Copyright (C) 2013 - 2026, The pgAdmin Development Team
* Ensure there's a blank line immediately following any copyright headers.
+4 -6
View File
@@ -22,14 +22,12 @@ purpose or how it works if not obvious from a quick review of the code itself.
CSS 3
*****
CSS3 is used for styling and layout throughout the application. Extensive use is
made of the Bootstrap Framework to aid in that process, however additional
styles must still be created from time to time.
CSS3 is used for styling and layout throughout the application.
Most custom styling comes from individual modules which may advertise static
stylesheets to be included in the module that is loading them via hooks.
Styling overrides (for example, to alter the Bootstrap look and feel) will
Styling overrides (for example, to alter the look and feel) will
typically be found in the **overrides.css** file in the main static file
directory for the application.
@@ -64,7 +62,7 @@ All HTML must be HTML 5 compliant.
Javascript
**********
Client-side code is written in Javascript using jQuery and various plugins.
Client-side code is written in Javascript using ReactJS and various plugins.
Whilst much of the code is rendered from static files, there is also code that
is rendered from templates using Jinja2 (often to inject the users settings) or
constructed on the fly from module hooks.
@@ -122,7 +120,7 @@ with the required file header is shown below::
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2023, The pgAdmin Development Team
# Copyright (C) 2013 - 2026, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################
+14 -3
View File
@@ -40,6 +40,9 @@ settings:
as the existing one, but will be an independent object. If you choose to copy
an existing collation, you cannot modify the collation properties displayed on
this tab.
* Use the drop-down listbox next to *Provider* to select a locale services associated
with the collation. Possible values are: icu, libc and builtin.
**Note:** The builtin option is available from v17 onwards.
* Use the *Locale* field to specify a locale; a locale specifies language and
language formatting characteristics. If you specify this, you cannot specify
either of the following parameters. To view a list of locales supported by
@@ -50,12 +53,20 @@ settings:
* Use the *LC_CTYPE* field to specify a locale with specified character
classification. The locale must be applicable to the current database encoding.
(See CREATE DATABASE for details.)
* Move the switch next to *Deterministic* to *YES* to specify whether the collation should use
deterministic comparisons. By default, this option is set to true. In a
deterministic comparison, strings that are not byte-wise equal are considered
unequal, even if they are considered logically equal in the comparison.
* Use the *Rules* field to specify rules for customizing the behavior of the collation.
It includes considerations such as character ordering, case sensitivity, and accent
sensitivity.
* Use the *Version* field to specify version string to store with the collation object.
Click the *SQL* tab to continue.
Your entries in the *Collation* dialog generate a SQL command (see an example b
elow). Use the *SQL* tab for review; revisit or switch tabs to make any changes
Your entries in the *Collation* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
Example
@@ -69,7 +80,7 @@ the *Collation* dialog:
:align: center
The example shown demonstrates creating a collation named *french* that uses the
rules specified for the locale, *fr-BI-x-icu. The collation is owned by
rules specified for the locale, *fr-BI-x-icu*. The collation is owned by
*postgres*.
* Click the *Info* button (i) to access online help. For more information about
+7 -1
View File
@@ -39,6 +39,12 @@ are disabled if inapplicable.)
a text value.
* Use the drop-down listbox next to *Collation* to apply a collation setting to
the column.
* Use the drop-down listbox next to *Compression* to set the compression method
for the column. Compression is supported only for variable-width data types,
and is used only when the column's storage mode is main or extended. This
option is available from v14 and above.
* Use the drop-down listbox next to *Storage* to set the storage mode for the
column. This option is available from v16 and above.
Click the *Constraints* tab to continue.
@@ -138,7 +144,7 @@ the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
* Specify a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
+8
View File
@@ -239,6 +239,14 @@ latex_documents = [
# https://groups.google.com/forum/#!topic/sphinx-users/ZlQ95_QikXo
latex_elements = {
'fncychap': r'\usepackage[Sonny]{fncychap}',
# pdflatex's default utf8 inputenc covers Latin-1/Latin-Extended-A but
# not the Vietnamese precomposed code points that appear in CVE
# reporter names. Declare the specific characters we use rather than
# switching engines.
'preamble': r'''
\DeclareUnicodeCharacter{1EA1}{\d{a}}
\DeclareUnicodeCharacter{1EC1}{\`{\^e}}
''',
}
+2 -2
View File
@@ -27,8 +27,8 @@ The configuration files are as follows:
needed.
* ``config_local.py``: This file is read after ``config_distro.py`` and is intended
for end users to change any default or packaging specific settings that they may
wish to adjust to meet local preferences or standards.This file is optional,
for the owner of the installation to change any default or packaging specific settings
that they may wish to adjust to meet local preferences or standards.This file is optional,
and may be created by users in the same directory as ``config.py`` if
needed.
+2
View File
@@ -11,6 +11,7 @@ and select *Connect Server...* from the context menu.
.. image:: images/connect_to_server.png
:alt: Connect to server dialog
:align: center
Provide authentication information for the selected server:
@@ -26,6 +27,7 @@ Tunnel and Database server passwords if not already saved.
.. image:: images/connect_to_tunneled_server.png
:alt: Connect to server dialog
:align: center
Provide authentication information for the selected server:
+168 -9
View File
@@ -26,9 +26,9 @@ where *<tag name>* is one of the following:
+==========+===============================================================================+
| latest | The most recent release. |
+----------+-------------------------------------------------------------------------------+
| 6.14 | A specific version (6.14 in this case). |
| 8.4 | A specific version (8.4 in this case). |
+----------+-------------------------------------------------------------------------------+
| 6 | the latest release of a specific major version (major version 6 in this case).|
| 8 | the latest release of a specific major version (major version 8 in this case).|
+----------+-------------------------------------------------------------------------------+
| snapshot | The latest nightly test build. |
+----------+-------------------------------------------------------------------------------+
@@ -42,23 +42,23 @@ maintenance functions to be executed. Multiple versions are included in the
following directories to allow use with different versions of the database
server:
* PostgreSQL 10: */usr/local/pgsql-10*
* PostgreSQL 11: */usr/local/pgsql-11*
* PostgreSQL 12: */usr/local/pgsql-12*
* PostgreSQL 13: */usr/local/pgsql-13*
* PostgreSQL 14: */usr/local/pgsql-14*
* PostgreSQL 15: */usr/local/pgsql-15*
* PostgreSQL 16: */usr/local/pgsql-16*
The default binary paths set in the container are as follows:
.. code-block:: bash
DEFAULT_BINARY_PATHS = {
'pg-18': '/usr/local/pgsql-18',
'pg-17': '/usr/local/pgsql-17',
'pg-16': '/usr/local/pgsql-16',
'pg-15': '/usr/local/pgsql-15',
'pg-14': '/usr/local/pgsql-14',
'pg-13': '/usr/local/pgsql-13',
'pg-12': '/usr/local/pgsql-12',
'pg-11': '/usr/local/pgsql-11',
'pg-10': '/usr/local/pgsql-10'
'pg-13': '/usr/local/pgsql-13'
}
this may be changed in the :ref:`preferences`.
@@ -133,7 +133,39 @@ than using the default.
Override the default file path for the server definition list. See the
/pgadmin4/servers.json mapped file below for more information. See the format
of the `JSON file <https://www.pgadmin.org/docs/pgadmin4/latest/import_export_servers.html#json-format>`_.
of the `Servers JSON file <https://www.pgadmin.org/docs/pgadmin4/latest/import_export_servers.html#json-format>`_.
**PGADMIN_REPLACE_SERVERS_ON_STARTUP**
*Default: null*
By default, the server definitions are only loaded on first launch, i.e. when initializing the configuration database. See PGADMIN_SERVER_JSON_FILE above.
If this variable is set to True, the server definitions will be replaced on every launch. This can be used to declaratively manage the server definitions.
**PGADMIN_PREFERENCES_JSON_FILE**
*Default: /pgadmin4/preferences.json*
Override the default file path for the preferences customization at the container creation. See the
/pgadmin4/preferences.json mapped file below for more information. See the format
of the `Preferences JSON file <https://www.pgadmin.org/docs/pgadmin4/latest/preferences.html#json-format>`_.
**PGADMIN_CUSTOM_CONFIG_DISTRO_FILE**
*Default: /pgadmin4/config_distro.py*
Override the default file path for the pgadmin configurations file.This can be used while provisioning
container with read only root file system to achieve a more secure pgadmin4 deployment for kubernetes.
Note that if you are externally mapping this file, then environment variables passed using *PGADMIN_CONFIG_*
suffix will be ignored.
**PGPASS_FILE**
*Default: <null>*
Set this variable to the path of a pgpass file if you want to supply passwords
for the servers added in pgAdmin. On startup, the file is copied into the
container and used as the ``.pgpass`` file.
**GUNICORN_ACCESS_LOGFILE**
@@ -229,6 +261,14 @@ pgAdmin in the container. Note that server definitions are only loaded on first
launch, i.e. when the configuration database is created, and not on subsequent
launches using the same configuration database.
**/pgadmin4/preferences.json**
If this file is mapped, preferences defined in it will be updated at launch
time. This allows customization of preferences settings into the instance of
pgAdmin in the container. Note that preferences are only set on first
launch, i.e. when the configuration database is created, and not on subsequent
launches using the same configuration database.
**/certs/server.cert**
If TLS is enabled, this file will be used as the servers TLS certificate.
@@ -281,6 +321,44 @@ Run a TLS secured container using a shared config/storage directory in
-e 'PGADMIN_ENABLE_TLS=True' \
-d dpage/pgadmin4
Restricted Security Contexts (OpenShift, ``--cap-drop=ALL``)
************************************************************
Some platforms refuse to honor Linux file capabilities. The two situations
the pgAdmin container handles automatically are:
- ``--cap-drop=ALL`` (or an equivalent restricted Kubernetes SecurityContext
such as OpenShift's ``restricted-v2`` SCC), which zeros the bounding set
and removes ``CAP_NET_BIND_SERVICE``. Exec of a capability-tagged binary
then fails with ``Operation not permitted``.
- ``--security-opt=no-new-privileges`` (or
``allowPrivilegeEscalation: false``), which causes the kernel to silently
strip file capabilities on exec. The binary runs, but a subsequent
``bind()`` to a port below 1024 fails with ``EPERM``.
The container's entrypoint reads ``/proc/self/status`` at startup, detects
either condition, switches gunicorn to the non-capability python
interpreter, and (when *PGADMIN_LISTEN_PORT* is not set) defaults the
listen port to **8080** for plain HTTP and **8443** for TLS instead of
80/443. A message is logged so the choice is visible.
In practice this means a typical OpenShift deployment requires no special
build, no setcap, and no custom configuration — only a Service / Route
that targets the chosen non-privileged port:
.. code-block:: bash
docker run --rm -p 8080:8080 \
--security-opt=no-new-privileges \
--cap-drop=ALL \
-e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \
-e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \
dpage/pgadmin4
If you explicitly set *PGADMIN_LISTEN_PORT*, that value is honored in both
the restricted and unrestricted paths.
Reverse Proxying
****************
@@ -487,3 +565,84 @@ the container is typically launched per the example below:
-e "SCRIPT_NAME=/pgadmin4" \
-l "traefik.frontend.pgadmin4.rule=Host(`host.example.com`) && PathPrefix(`/pgadmin4`)" \
-d dpage/pgadmin4
Sharing the data volume across containers (Kubernetes init containers)
----------------------------------------------------------------------
A common Kubernetes pattern is to bootstrap a pgAdmin deployment with one or
more init containers that share the ``/var/lib/pgadmin`` volume with the main
pgAdmin container — for example, an init container that runs
``setup.py load-servers`` to import a ``servers.json`` definition file at
each rollout.
**The image tag of any such sidecar/init container must NOT be newer than
the main pgAdmin container's tag.** pgAdmin's configuration database
(``pgadmin4.db``) is migrated forward only — destructive operations such as
dropping a column are part of normal upgrades. If an init container running
``pgadmin4:latest`` (or any newer tag) executes ``setup.py`` against a
``pgadmin4.db`` that the main, older pgAdmin will then read, the init
container's migrations will advance the schema past what the main container's
ORM understands, and the main container will fail at runtime with errors
like ``no such column: <table>.<column>``.
The safe configuration is to pin **both** the main container and every
sidecar/init container that touches the data volume to the **same**
explicit version tag, and upgrade them together:
.. code-block:: yaml
# Deployment manifest (spec.template.spec): pin every container that
# touches the data volume to the same explicit tag. Do NOT use :latest.
spec:
template:
spec:
initContainers:
- name: import-servers-json
image: docker.io/dpage/pgadmin4:9.14 # match the main container
# ... rest of the init container spec ...
containers:
- name: pgadmin
image: docker.io/dpage/pgadmin4:9.14 # main pgAdmin container
If you deploy pgAdmin with a Helm chart, set the equivalent image-tag values
for both the main container and every init/sidecar container rather than the
raw fields shown above. When upgrading pgAdmin, change every reference to the
image tag at the same time so that the main container and any sidecar/init
containers move forward together.
Use ``strategy: Recreate``, not ``RollingUpdate``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Even when every container's image tag is pinned correctly, **a rolling
upgrade across pgAdmin versions is unsafe** when the old and new pods share
a data volume. Kubernetes' default ``RollingUpdate`` strategy starts the
new pod, waits for it to become healthy, and only *then* terminates the
old pod. During that overlap window:
1. The new pod's startup runs ``db_upgrade()`` and applies any pending
migrations to the shared ``pgadmin4.db`` — including destructive ones
(column drops, table renames, type changes).
2. The new pod becomes healthy. The old pod is still alive and still has
``pgadmin4.db`` open with its older ORM schema metadata.
3. Until Kubernetes terminates the old pod, requests routed to it
generate queries that reference the pre-migration schema. Those
queries now fail at runtime against the migrated database — for
example, ``no such column: <table>.<column>`` when a column was
dropped in this release.
Because pgAdmin's migrations are forward-only with single-step destructive
operations (a column dropped in release N+1 is gone immediately, not after
a deprecation cycle), there is no safe way for an N-version pod to keep
serving against a migrated N+1 schema. Set the deployment strategy to
``Recreate``, which terminates the old pod *before* starting the new one:
.. code-block:: yaml
spec:
strategy:
type: Recreate # not RollingUpdate
The trade-off is a few seconds of downtime during each upgrade, in
exchange for not serving traffic from a pod whose ORM is misaligned with
the database schema underneath it. This is the supported upgrade
strategy for pgAdmin K8s deployments today.
+21 -4
View File
@@ -19,6 +19,9 @@ Use the fields in the *General* tab to identify the database:
* Use the *Database* field to add a descriptive name for the database. The name
will be displayed in the *pgAdmin* tree control.
* Use the *OID* field to specify the object identifier to be used for the new
database. Users can specify the value greater than 16383. This option is available
from v15 and above.
* Select the owner of the database from the drop-down listbox in the *Owner*
field.
* Store notes about the database in the *Comment* field.
@@ -38,15 +41,29 @@ Use the *Definition* tab to set properties for the database:
* Select a tablespace from the drop-down listbox in the *Tablespace* field. The
selected tablespace will be the default tablespace used to contain database
objects.
* Select the strategy from the drop-down listbox in the *Strategy* field while
creating a new database. This option is available from v15 and above.
* Select the locale provider from the drop-down listbox in the *Locale Provider*
field to set the default collation for this database. Possible values are: icu, libc and builtin.
This option is available from v15 and above. **Note:** The icu and libc options are available
from v15 and builtin option is available from v17 onwards.
* Select the collation order from the drop-down listbox in the *Collation* field.
* Select the character classification from the drop-down listbox in the
*Character Type* field. This affects the categorization of characters, e.g.
lower, upper and digit. The default, or a blank field, uses the character
classification of the template database.
* Select the icu locale from the drop-down listbox in the *ICU Locale* to
specifies the ICU locale ID if the ICU locale provider is used.
This option is available from v15 and above.
* Specify the icu rules in the *ICU Rules* field as additional collation
rules to customize the behavior of the default collation of this database.
This option is available from v16 and above.
* Select the builtin locale from the drop-down listbox in the *Builtin Locale* if the
builtin locale provider is used. This option is available from v17 and above.
* Specify a connection limit in the *Connection Limit* field to configure the
maximum number of connection requests. The default value (*-1*) allows
unlimited connections to the database.
* If the *templates?* is set to true, then database will be a template database.
* If *Template?* is set to *Yes*, the database will be a template database.
Click the *Security* tab to continue.
@@ -72,7 +89,7 @@ database. Click the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
* Specify a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
@@ -108,8 +125,8 @@ Use the *Advanced* tab to set advanced parameters for the database.
* Use *Schema restriction* field to provide a SQL restriction that will be used
against the pg_namespace table to limit the schemas that you see.
For example, you might enter: *public* so that only *public* are shown in
the pgAdmin browser.Separate entries with a comma or tab as you type.
For example, you might enter: *public* so that only *public* is shown in
the pgAdmin browser. Separate entries with a comma or tab as you type.
Click the *SQL* tab to continue.
+108
View File
@@ -0,0 +1,108 @@
.. _dbms_job:
*****************
`DBMS Job`:index:
*****************
Use the *DBMS Job* dialog to create a DBMS Job.
.. image:: images/dbms_job_general.png
:alt: DBMS Job dialog general tab
:align: center
Use the fields in the *General* tab to create job:
* Use the *Name* field to add a descriptive name for the job. The name will
be displayed in the *pgAdmin* object explorer.
* Use the *Enabled?* switch to indicate that job should be enabled or disabled.
* Use the *Job Type* field to select the type of the job. Type could be SELF-CONTAINED or PRE-DEFINED.
If the Job Type is Self-Contained you need to specify the action and repeat interval in the Action and Repeat tabs respectively.
If the Job Type is Pre-Defined you need to specify the existing Program and Schedule names in the Pre-Defined tab.
* Store notes about the job in the *Comment* field.
Click the *Action* tab to continue.
.. image:: images/dbms_job_action.png
:alt: DBMS Job dialog action tab
:align: center
Use the *Action* tab to select the action for the job. This tab is only enabled when the job type is 'SELF-CONTAINED'.
* Use the *Type* field to select the type of the job. Type could be PLSQL BLOCK or STORED PROCEDURE.
* Use the *Procedure* field to select an existing procedure that executes when the job is invoked.
* *Number of Arguments* field is read-only and indicates the quantity of arguments necessary for the chosen procedure.
Click the *Code* tab to continue.
.. image:: images/dbms_job_code.png
:alt: DBMS Job dialog code tab
:align: center
* Use the *Code* field to write the code that executes when the job is invoked.
This tab is only enabled when the job type is 'SELF-CONTAINED' and type of the action is set to 'PLSQL BLOCK'.
Click the *Arguments* tab to continue.
.. image:: images/dbms_job_arguments.png
:alt: DBMS Job dialog arguments tab
:align: center
* *Arguments* tab outlines the arguments required by the selected procedure in the 'Action' tab. This tab is only enabled when the job type is 'SELF-CONTAINED'.
Click the *Repeat* tab to continue.
.. image:: images/dbms_job_repeat.png
:alt: DBMS Job dialog repeat tab
:align: center
Use the *Repeat* tab to select the repeat interval for the job. This tab is only enabled when the job type is 'SELF-CONTAINED'.
* Use the calendar selector in the *Start* field to specify the starting date
and time for the job.
* Use the calendar selector in the *End* field to specify the ending date and
time for the job.
* Use the *Frequency* field to select the frequency. Frequency is one of the following:
YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY.
* Use the *Date* field to select the date on which job will execute.Date is YYYYMMDD.
* Use the *Months* field to select the months in which the job will execute.
* Use the *Week Days* field to select the days on which the job will execute.
* Use the *Month Days* field to select the numeric days on which the job will
execute.
* Use the *Hours* field to select the hour at which the job will execute.
* Use the *Minutes* field to select the minute at which the job will execute.
Click the *Pre-Defined* tab to continue.
.. image:: images/dbms_job_predefined.png
:alt: DBMS Job dialog predefined tab
:align: center
Use the *Pre-Defined* tab to select the existing program and schedule to create the job.
This tab is only enabled when the job type is 'PRE-DEFINED'.
* Use the *Program Name* field to select the existing program.
* Use the *Schedule Name* field to select an existing schedule.
Click the *SQL* tab to continue.
Your entries in the *DBMS Job* dialog generate a SQL command (see an example below).
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
SQL command.
**Example**
The following is an example of the sql command generated by user selections in
the *DBMS Job* dialog:
.. image:: images/dbms_job_sql.png
:alt: DBMS Job dialog sql tab
:align: center
* Click the *Info* button (i) to access online help.
* Click the *Help* button (?) to access dialog help.
* Click the *Save* button to save work.
* Click the *Close* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+45
View File
@@ -0,0 +1,45 @@
.. _dbms_job_scheduler:
********************************
`Using EDB Job Scheduler`:index:
********************************
In the past versions of EPAS, DBMS_SCHEDULER or DBMS_JOBS required the configuration
of pgAgent, an essential service for their functionality. Maintaining pgAgent in a
production environment is cumbersome. The need for correct configuration, regular updates,
and ensuring the service’s health added complexity.
EPAS 16 revolutionizes job scheduling by eliminating the need for the pgAgent component.
The new version introduces EDB Job Scheduler which is an extension that runs the job scheduler
as a background process for the DBMS_SCHEDULER and DBMS_JOB packages.
The EDB Job Scheduler has a scheduler process that starts when the database cluster starts.
To start the scheduler process, load the EDB Job Scheduler extension using the **shared_preload_libraries**
parameter. After you load the extension, create the extension **'edb_job_scheduler'** and **'dbms_scheduler'** using
the CREATE EXTENSION command. The database in which you're creating the extension must be listed in the
**edb_job_scheduler.database_list** parameter.
Instructions for configuring the EDB Job Scheduler can be found in the
`Configuring EDB Job Scheduler <https://www.enterprisedb.com/docs/pg_extensions/edb_job_scheduler/configuring/>`_.
.. image:: images/dbms_job_scheduler.png
:alt: DBMS Job Scheduler Object Browser
:align: center
Check the status of all the jobs
********************************
To check the running status of all the jobs select the 'DBMS Job Scheduler' collection node from the object
explorer and select the Properties tab.
.. image:: images/dbms_job_details.png
:alt: DBMS Job Details
:align: center
.. toctree::
:maxdepth: 1
dbms_job
dbms_program
dbms_schedule
+71
View File
@@ -0,0 +1,71 @@
.. _dbms_program:
*********************
`DBMS Program`:index:
*********************
Use the *DBMS Program* dialog to create a DBMS Program.
.. image:: images/dbms_program_general.png
:alt: DBMS Program dialog general tab
:align: center
Use the fields in the *General* tab to create program:
* Use the *Name* field to add a descriptive name for the program. The name will
be displayed in the *pgAdmin* object explorer.
* Use the *Enabled?* switch to indicate that program should be enabled or disabled.
* Store notes about the program in the *Comment* field.
Click the *Action* tab to continue.
.. image:: images/dbms_program_action.png
:alt: DBMS Program dialog action tab
:align: center
Use the *Action* tab to select the action for the program:
* Use the *Type* field to select the type of the program. Type could be PLSQL BLOCK or STORED PROCEDURE.
* Use the *Procedure* field to select an existing procedure that executes when the program is invoked.
* *Number of Arguments* field is read-only and indicates the quantity of arguments necessary for the chosen procedure.
Click the *Code* tab to continue.
.. image:: images/dbms_program_code.png
:alt: DBMS Program dialog code tab
:align: center
* Use the *Code* field to write the code that executes when the program is invoked.
This tab is only enabled when the type of the program is set to 'PLSQL BLOCK'.
Click the *Arguments* tab to continue.
.. image:: images/dbms_program_arguments.png
:alt: DBMS Program dialog arguments tab
:align: center
* *Arguments* tab is a read-only section that outlines the arguments required by the selected procedure in the 'Action' tab.
Click the *SQL* tab to continue.
Your entries in the *DBMS Program* dialog generate a SQL command (see an example below).
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
SQL command.
**Example**
The following is an example of the sql command generated by user selections in
the *DBMS Program* dialog:
.. image:: images/dbms_program_sql.png
:alt: DBMS Program dialog sql tab
:align: center
* Click the *Info* button (i) to access online help.
* Click the *Help* button (?) to access dialog help.
* Click the *Save* button to save work.
* Click the *Close* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+61
View File
@@ -0,0 +1,61 @@
.. _dbms_schedule:
**********************
`DBMS Schedule`:index:
**********************
Use the *DBMS Schedule* dialog to create a DBMS Schedule.
.. image:: images/dbms_schedule_general.png
:alt: DBMS Schedule dialog general tab
:align: center
Use the fields in the *General* tab to create schedule:
* Use the *Name* field to add a descriptive name for the schedule. The name will
be displayed in the *pgAdmin* object explorer.
* Store notes about the schedule in the *Comment* field.
Click the *Repeat* tab to continue.
.. image:: images/dbms_schedule_repeat.png
:alt: DBMS Schedule dialog repeat tab
:align: center
Use the *Repeat* tab to select the repeat interval for the schedule:
* Use the calendar selector in the *Start* field to specify the starting date
and time for the schedule.
* Use the calendar selector in the *End* field to specify the ending date and
time for the schedule.
* Use the *Frequency* field to select the frequency. Frequency is one of the following:
YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY.
* Use the *Date* field to select the date on which schedule will execute.Date is YYYYMMDD.
* Use the *Months* field to select the months in which the schedule will execute.
* Use the *Week Days* field to select the days on which the schedule will execute.
* Use the *Month Days* field to select the numeric days on which the schedule will
execute.
* Use the *Hours* field to select the hour at which the schedule will execute.
* Use the *Minutes* field to select the minute at which the schedule will execute.
Click the *SQL* tab to continue.
Your entries in the *DBMS Schedule* dialog generate a SQL command (see an example below).
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
SQL command.
**Example**
The following is an example of the sql command generated by user selections in
the *DBMS Schedule* dialog:
.. image:: images/dbms_schedule_sql.png
:alt: DBMS Schedule dialog sql tab
:align: center
* Click the *Info* button (i) to access online help.
* Click the *Help* button (?) to access dialog help.
* Click the *Save* button to save work.
* Click the *Close* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+24 -19
View File
@@ -61,6 +61,7 @@ values required by the program:
.. image:: images/debug_params.png
:alt: Debugger parameter dialog
:align: center
Use the fields on the *Debugger* dialog to provide a value for each parameter:
@@ -100,25 +101,29 @@ The toolbar options are:
:alt: Debugger navigation toolbar
:align: center
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| Option | Action |
+=========================+===========================================================================================================+
| *Step into* | Click the *Step into* icon to execute the currently highlighted line of code. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Step over* | Click the *Step over* icon to execute a line of code, stepping over any sub-functions invoked by the code.|
| | The sub-function executes, but is not debugged unless it contains a breakpoint. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Continue/Start* | Click the *Continue/Start* icon to execute the highlighted code, and continue until the program |
| | encounters a breakpoint or completes. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Toggle breakpoint* | Use the *Toggle breakpoint* icon to enable or disable a breakpoint (without removing the breakpoint). |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Clear all breakpoints* | Click the *Clear all breakpoints* icon to remove all breakpoints from the program. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Stop* | Click the *Stop* icon to halt the execution of a program. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Help* | Click the *Help* icon to open debugger documentation. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
.. table::
:class: longtable
:widths: 1 4 1
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
| Option | Action | Shortcut |
+=========================+===========================================================================================================+========================+
| *Step into* | Click the *Step into* icon to execute the currently highlighted line of code. | Option/Alt + Shift + I |
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
| *Step over* | Click the *Step over* icon to execute a line of code, stepping over any sub-functions invoked by the code.| Option/Alt + Shift + O |
| | The sub-function executes, but is not debugged unless it contains a breakpoint. | |
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
| *Continue/Start* | Click the *Continue/Start* icon to execute the highlighted code, and continue until the program | Option/Alt + Shift + C |
| | encounters a breakpoint or completes. | |
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
| *Toggle breakpoint* | Use the *Toggle breakpoint* icon to enable or disable a breakpoint (without removing the breakpoint). | Option/Alt + Shift + T |
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
| *Clear all breakpoints* | Click the *Clear all breakpoints* icon to remove all breakpoints from the program. | Option/Alt + Shift + X |
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
| *Stop* | Click the *Stop* icon to halt the execution of a program. | Option/Alt + Shift + S |
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
| *Help* | Click the *Help* icon to open debugger documentation. | |
+-------------------------+-----------------------------------------------------------------------------------------------------------+------------------------+
The top panel of the debugger window displays the program body; click in the
grey margin next to a line number to add a breakpoint. The highlighted line in
+15 -17
View File
@@ -36,43 +36,34 @@ See :ref:`config_py` for more information on configuration settings.
Desktop Runtime Standalone Application
======================================
The Desktop Runtime is based on `NWjs <https://nwjs.io/>`_ which integrates a
The Desktop Runtime is based on `Electron <https://www.electronjs.org/>`_ which integrates a
browser and the Python server creating a standalone application.
.. image:: images/runtime_standalone.png
:alt: Runtime Standalone
:align: center
Runtime Menu
------------
Runtime Menu Items
------------------
.. image:: images/runtime_menu.png
:alt: Runtime Menu
:align: center
Use the *File Menu* to access the *Runtime Menu*:
Use the *File Menu* to access the runtime menu items:
+-------------------------+---------------------------------------------------------------------------------------------------------+
| Option | Action |
+=========================+=========================================================================================================+
| *Configure...* | Click to open configuration dialog to configure fixed port, port number and connection timeout. |
| *View logs...* | Click to open the view log dialog to view the pgAdmin 4 logs. |
+-------------------------+---------------------------------------------------------------------------------------------------------+
| *View log...* | Click to open the view log dialog to view the pgAdmin 4 logs. |
+-------------------------+---------------------------------------------------------------------------------------------------------+
| *Enter Full Screen* | Click to enter/exit the full screen mode. Keyboard Shortcuts: OSX (Cmd + Ctrl + F), Other OS (F10). |
+-------------------------+---------------------------------------------------------------------------------------------------------+
| *Actual Size* | Click to change the window size to it original size. Keyboard Shortcuts: OSX (Cmd + 0), |
| | Other OS (Ctrl + 0). |
+-------------------------+---------------------------------------------------------------------------------------------------------+
| *Zoom In* | Click to increase the zoom level. Keyboard Shortcuts: OSX (Cmd + +), Other OS (Ctrl + +). |
+-------------------------+---------------------------------------------------------------------------------------------------------+
| *Zoom Out* | Click to decrease the zoom level. Keyboard Shortcuts: OSX (Cmd + -), Other OS (Ctrl + -). |
| *Configure runtime...* | Click to open configuration dialog to configure fixed port, port number and connection timeout. |
+-------------------------+---------------------------------------------------------------------------------------------------------+
Configuration Dialog
--------------------
Use the *Runtime Menu* to access the *Configuration* dialog:
Use the *Configure runtime...* option to access the *Configuration* dialog:
.. image:: images/runtime_configuration.png
:alt: Runtime Configuration
@@ -101,7 +92,7 @@ Timeout*, and 'Open Documentation in Default Browser?' configuration parameters:
Log dialog
----------
Use the *Runtime Menu* to access the *Log* dialog:
Use the *File Menu* to access the *View Logs* dialog:
.. image:: images/runtime_view_log.png
:alt: Runtime View Log
@@ -137,3 +128,10 @@ The configuration settings are stored in *runtime_config.json* file, which
will be available on Unix systems (~/.local/share/pgadmin/),
on Mac OS X (~/Library/Preferences/pgadmin),
and on Windows (%APPDATA%/pgadmin).
For details on the auto-update system for the desktop application, see
.. toctree::
:maxdepth: 1
auto_update_desktop_app
+1
View File
@@ -17,3 +17,4 @@ PL/SQL code.
schema_diff
erd_tool
psql_tool
ai_tools
+87
View File
@@ -0,0 +1,87 @@
.. _directory_dialog:
*************************
`Directory Dialog`:index:
*************************
Use the Directory dialog to create an alias for a file system directory path.
To create directories, you must have the CREATE ANY DIRECTORY system privilege.
When you create a directory, you are automatically granted READ and WRITE privileges
on the directory, and you can grant READ and WRITE privileges to other users and roles.
The superuser can also grant these privileges to other users and roles.
Please note that directories are supported when connected to EDB Postgres Advanced Server.
For more information about using directories, please see the EDB Postgres Advanced Server Guide, available at:
https://www.enterprisedb.com/docs/epas/latest/epas_compat_sql/
The *Directory* dialog organizes the definition of a directory through the
following tabs: *General*, *Definition*, *Security*, and *SQL*.
The *SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/directory_general.png
:alt: Directory general tab
:align: center
Use the fields on the *General* tab to specify directory attributes:
* Use the *Name* field to add a directory alias name. This name will be displayed in the object explorer.
* Select the owner of the directory from the drop-down listbox in the *Owner*
field.
Click the *Definition* tab to continue.
.. image:: images/directory_definition.png
:alt: Directory dialog definition tab
:align: center
* Use the *Location* field to specify a fully qualified directory path represented
by the alias name. The CREATE DIRECTORY command doesn't create the operating system directory.
The physical directory must be created independently using operating system commands.
Click the *Security* tab to continue.
.. image:: images/directory_security.png
:alt: Directory dialog security tab
:align: center
NOTE:- This *Security* tab will be only available for EPAS 17.
Use the *Security* tab to assign privileges for the directory.
Use the *Privileges* panel to assign security privileges. Click the *Add* icon
(+) to assign a set of privileges:
* Select the name of the role from the drop-down listbox in the *Grantee* field.
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or
more privileges to grant the selected privileges to the specified user.
Click the *Add* icon to assign additional sets of privileges; to discard a
privilege, click the trash icon to the left of the row and confirm deletion in
the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Directory* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
Example
*******
The following is an example of the sql command generated by user selections in
the *Directory* dialog:
.. image:: images/directory_sql.png
:alt: Directory dialog sql tab
:align: center
The example shown demonstrates creating a directory named *test1*. It has a
*location* value equal to */home/test_dir*.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Close* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+1 -1
View File
@@ -89,7 +89,7 @@ Use the *Security Labels* panel to assign security labels. Click the *Add* icon
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
* Specify a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
+44 -23
View File
@@ -5,9 +5,9 @@
`View/Edit Data`:index:
***********************
To view or modify data, right click on a table or view name in the *Browser*
tree control. When the context menu opens, use the *View/Edit Data* menu to
specify the number of rows you would like to display in the editor panel.
To view or modify data, right click on a table or view name in the
*Object Explorer*. When the context menu opens, use the *View/Edit Data* menu
to specify the number of rows you would like to display in the editor panel.
.. image:: images/editgrid.png
:alt: Edit grid window
@@ -49,7 +49,7 @@ To modify the displayed data:
* To change a numeric value within the grid, double-click the value to select
the field. Modify the content in the square in which it is displayed.
* To change a non-numeric value within the grid, double-click the content to
access the edit bubble. After modifying the contentof the edit bubble, click
access the edit bubble. After modifying the content of the edit bubble, click
the *Ok* button to display your changes in the data grid, or *Cancel* to
exit the edit bubble without saving.
@@ -62,7 +62,7 @@ table. As soon as you store the data, the row is assigned a row number, and a
fresh empty line is added to the data grid.
To write a SQL NULL to the table, simply leave the field empty. When you store
the new row, the will server fill in the default value for that column. If you
the new row, the server will fill in the default value for that column. If you
store a change to an existing row, the value NULL will explicitly be written.
To write an empty string to the table, enter the special string '' (two single
@@ -101,6 +101,11 @@ properties of the geometries directly in map, just click the specific geometry:
viewer will render geometries with the same SRID in the map. If SRID=4326 the
OSM tile layer will be added into the map.
- *Custom tile provider:* A custom map tile provider ({z}/{x}/{y} URL template,
in EPSG:3857, EPSG:4326 or EPSG:3395) can be configured as a base layer via
*Preferences > Query Tool > Geometry Viewer*. When configured, it is
selected as the default base layer.
- *Data size:* For performance reasons, the viewer will render no more than
100000 geometries, totaling up to 20MB.
@@ -110,9 +115,9 @@ properties of the geometries directly in map, just click the specific geometry:
**JSON Data Editor**
A built in json editor is provided for *JSON/JSONB Data*.Double clicking on json/jsonb
data type cell in data grid will open JSON Editor.Editor provides different mode to
view and edit json data.
A built-in JSON editor is provided for *JSON/JSONB Data*. Double-clicking on a JSON/JSONB
data type cell in the data grid will open the JSON Editor. The editor provides different modes to
view and edit JSON data.
.. image:: images/json_editor_modes.png
@@ -120,21 +125,21 @@ view and edit json data.
:align: center
*Code Mode*:
Provides way to format & compact json data.Also provides ability to repair json data
by fixing quotes and escape characters, removing comments and JSONP notation and
turn JavaScript objects into JSON.
Provides a way to format and compact JSON data. Also provides the ability to repair JSON data
by fixing quotes and escape characters, removing comments and JSONP notation, and
turning JavaScript objects into JSON.
*Tree Mode*:
Enabled to change, add, move, remove, and duplicate fields and values.Provides ability
to searh & hilight data.
Enables changing, adding, moving, removing, and duplicating fields and values. Provides the ability
to search and highlight data.
*Form Mode*:
Allows only to edit values in json data there by providing ability to keep data structure
Allows editing only the values in JSON data, thereby providing the ability to keep the data structure
unchanged while editing.
*Preview Mode*:
Provides ability to check data before saving and also shows size of current json data.
Format and compact json data as well.
Provides the ability to check data before saving and also shows the size of the current JSON data.
Allows formatting and compacting JSON data as well.
*Editor Toolbar*
@@ -170,18 +175,18 @@ Tree/Form mode:
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
| *Transform* | Click to *Transform* to filter data using JSME query language. | Code, Preview, Tree |
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
| *Undo* | Click to *Undo* to undo last action performed on data . | Code, Preview, Tree, From |
| *Undo* | Click to *Undo* to undo last action performed on data. | Code, Preview, Tree, Form |
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
| *Redo* | Click to *Redo* to repat last action performed on data . | Code, Preview, Tree, From |
| *Redo* | Click to *Redo* to repeat last action performed on data. | Code, Preview, Tree, Form |
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
| *Mode* | Click to *Mode* dropdown to change dipaly mode of editor.Different modes avaialble | Code, Tree, From, Preview |
| | are Code, Preview, Tree, From. | |
| *Mode* | Click the *Mode* dropdown to change the display mode of the editor. Different modes | Code, Tree, Form, Preview |
| | available are Code, Preview, Tree, and Form. | |
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
| *Expand All* | Click to *Expand All* to expand json data. | Tree, From |
| *Expand All* | Click *Expand All* to expand JSON data. | Tree, Form |
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
| *Collapse All* | Click to *Redo* to collapse json data. | Tree, From |
| *Collapse All* | Click *Collapse All* to collapse JSON data. | Tree, Form |
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
| *Search Box* | Enter partial/complete string to search in data. | Tree, From |
| *Search Box* | Enter partial/complete string to search in data. | Tree, Form |
+----------------------+----------------------------------------------------------------------------------------+---------------------------+
@@ -212,6 +217,7 @@ To add new column(s) in data sorting grid, click on the [+] icon.
* Use the drop-down *Column* to select the column you want to sort.
* Use the drop-down *Order* to select the sort order for the column.
* Use the drop-down *NULLs* to select the NULL values order for the column.
To delete a row from the grid, click the trash icon.
@@ -222,3 +228,18 @@ To delete a row from the grid, click the trash icon.
:maxdepth: 2
viewdata_filter
Promote View/Edit Data to Query Tool
************************************
A View/Edit Data tab can be converted to a Query Tool Tab just by editing the query. Once you start editing, it will ask if you really want to move away from View/Edit.
.. image:: images/promote_view_edit_data_warning.png
:alt: Promote View/Edit Data tab to Query Tool tab warning
:align: center
You can disable the dialog by selecting the "Don't Ask again" checkbox. If you wish to resume the confirmation dialog, you can do it from "Preferences -> Query Tool -> Editor -> Show View/Edit Data Promotion Warning?"
Once you chose to continue, you won't be able to use the features of View/Edit mode like the filter and sorting options, limit, etc. It is a one-way conversion. It will be a query tool now.
+59 -27
View File
@@ -12,13 +12,20 @@ The Entity-Relationship Diagram (ERD) tool is a database design tool that provid
* Save the diagram and open it later to continue working on it.
* Generate ready to run SQL from the database design.
* Generate the database diagram for an existing database.
* Drag and drop tables from browser tree to the diagram.
* Drag and drop tables from object explorer to the diagram.
.. image:: images/erd_tool.png
:alt: ERD tool window
:align: center
You can open multiple copies of the ERD tool in individual tabs simultaneously. To close a copy of the ERD tool, click the *X* in the upper-right hand corner of the tab bar.
You can open multiple copies of the ERD tool in individual tabs simultaneously.
You can also generate an ERD from a database, schema or a table.
* The ERD for database will fetch all the tables from all the schemas of the database and plot them with foreign key links.
* The ERD for schema will fetch all the tables from a schema and plot them with foreign key links. If any table refers to a table in another
schema, then that link/foreign key will be removed.
* The ERD for table will fetch all the tables linked directly or indirectly to mentioned table. You can change the depth of traversal from :ref:`Preferences <preferences>`.
Toolbar
*******
@@ -41,9 +48,9 @@ File Options
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| Icon | Behavior | Shortcut |
+======================+===================================================================================================+================+
| *Open File* | Click the *Open File* icon to load a previously saved diagram. | Ctrl + O |
| *Open File* | Click the *Open File* icon to load a previously saved diagram. | Cmd/Ctrl + O |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Save* | Click the *Save* icon to perform a quick-save of a previously saved diagram, or to save the | Ctrl + S |
| *Save* | Click the *Save* icon to perform a quick-save of a previously saved diagram, or to save the | Cmd/Ctrl + S |
| | diagram to a file. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Save as* | Click the *Save As* to open a new browser dialog and specify a new location to save the diagram. | Ctrl + Shift + |
@@ -60,13 +67,13 @@ Export Options
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| Icon | Behavior | Shortcut |
+======================+===================================================================================================+================+
| *Generate SQL* | Click the *Generate SQL* icon to generate the DDL SQL for the diagram and open a query tool | Option + Ctrl +|
| | with the generated SQL ready for execution. | S |
| *Generate SQL* | Click the *Generate SQL* icon to generate the DDL SQL for the diagram and open a query tool | Option/Alt + |
| | with the generated SQL ready for execution. | Ctrl + S |
| | You can select the option *With DROP Table* if you wish to have DROP Table DDL statements before | |
| | each CREATE Table DDL. You can see the option by clicking the down arrow beside the SQL button. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Download image* | Click the *Download image* icon to save the ERD diagram in a image formate | Option + Ctrl +|
| | | I |
| *Download image* | Click the *Download image* icon to save the ERD diagram in an image format. | Option/Alt + |
| | | Ctrl + I |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
Editing Options
@@ -79,6 +86,9 @@ Editing Options
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| Icon | Behavior | Shortcut |
+======================+===================================================================================================+================+
| *Search table* | Click to search for a table in the diagram. Selecting a table from the search results will bring | Option/Alt + |
| | it into view and highlight it. | Ctrl + F |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Add table* | Click this button to add a new table to the diagram. On clicking, this will open a table dialog | Option/Alt + |
| | where you can put the table details. | Ctrl + A |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
@@ -102,11 +112,14 @@ Table Relationship Options
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| Icon | Behavior | Shortcut |
+======================+===================================================================================================+================+
| *1M* | Click this button to open a one-to-many relationship dialog to add a relationship between the | Option/Alt + |
| *1-1* | Click this button to open a one-to-one relationship dialog to add a relationship between the | Option/Alt + |
| | two tables. The selected table becomes the referencing table. | Ctrl + B |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *1-M* | Click this button to open a one-to-many relationship dialog to add a relationship between the | Option/Alt + |
| | two tables. The selected table becomes the referencing table and will have the *many* endpoint of | Ctrl + O |
| | the link. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *MM* | Click this button to open a many-to-many relationship dialog to add a relationship between the | Option/Alt + |
| *M-M* | Click this button to open a many-to-many relationship dialog to add a relationship between the | Option/Alt + |
| | two tables. This option will create a new table based on the selected columns for the two relating| Ctrl + M |
| | tables and link them. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
@@ -122,7 +135,7 @@ Node Color Options
| Icon | Behavior |
+======================+==========================================================================================================+
| *Fill Color* | Use Fill Color to change the background color of a table node. This is helpful if you want to |
| | identify a of group tables. Once set, all the newly added tables will take the same color. |
| | identify a group of tables. Once set, all the newly added tables will take the same color. |
+----------------------+----------------------------------------------------------------------------------------------------------+
| *Text Color* | Use Text Color to change the text color of a table node based on the fill color to make text |
| | easily readable. |
@@ -135,18 +148,21 @@ Utility Options
:class: longtable
:widths: 1 4 1
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| Icon | Behavior | Shortcut |
+======================+===================================================================================================+================+
| *Add/Edit note* | Click this button to make notes on tables nodes while designing the database. | Option/Alt + |
| | | Ctrl + N |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Auto align* | Click this button to auto align all tables and links to make it look more cleaner. | Option/Alt + |
| | | Ctrl + L |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| *Show details* | Click this button to toggle the column details visibility. It allows you to show few or more | Option/Alt + |
| | column details. | Shift + D |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
+-------------------------+------------------------------------------------------------------------------------------------+----------------+
| Icon | Behavior | Shortcut |
+=========================+================================================================================================+================+
| *Add/Edit note* | Click this button to make notes on tables nodes while designing the database. | Option/Alt + |
| | | Ctrl + N |
+-------------------------+------------------------------------------------------------------------------------------------+----------------+
| *Auto align* | Click this button to auto-align all tables and links to make them look cleaner. | Option/Alt + |
| | | Ctrl + L |
+-------------------------+------------------------------------------------------------------------------------------------+----------------+
| *Show details* | Click this button to toggle the column details visibility. It allows you to show few or more | Option/Alt + |
| | column details. | Shift + D |
+-------------------------+------------------------------------------------------------------------------------------------+----------------+
| *Cardinality Notation* | Change the cardinality notation format used to present relationship links. Options available | |
| | are - Crow's Foot Notation and Chen Notation. | |
+-------------------------+------------------------------------------------------------------------------------------------+----------------+
Zoom Options
************
@@ -178,7 +194,7 @@ Table Dialog
The table dialog allows you to:
* Change the table structure details.
* It can be used edit an existing table or add a new one.
* It can be used to edit an existing table or add a new one.
* Refer :ref:`table dialog <table_dialog>` for information on different fields.
Table Node
@@ -190,13 +206,29 @@ Table Node
The table node shows table details in a graphical representation:
* The top bar has a *details toggle button* that is used to toggle column details visibility. There is also a *note button* that is visible only if there is some note added. you can click on this button to quickly change the note.
* The top bar has a *details toggle button* that is used to toggle column details visibility. There is also a *note button* that is visible only if there is some note added. You can click on this button to quickly change the note.
* The first row shows the schema name of the table. Eg. *public* in above image.
* The second row shows the table name. Eg. *users* in above image.
* All other rows below the table name are the columns of the table along with data type. If the column is a primary key then it will have lock key icon eg. id is the primary key in above image. Otherwise, it will have column icon.
* you can click on the node and drag to move on the canvas.
* You can click on the node and drag to move on the canvas.
* Upon double click on the table node or by clicking the edit button from the toolbar, the table dialog opens where you can change the table details. Refer :ref:`table dialog <table_dialog>` for information on different fields.
The One to One Link Dialog
***************************
.. image:: images/erd_11_dialog.png
:alt: ERD tool 1-1 dialog
:align: center
The one to one link dialog allows you to:
* Add a one to one relationship between two tables.
* *Local Table* is the table that references a table and has the *one* end point.
* *Local Column* the column that references.
* *Select Constraint* To implement a one-to-one relationship, the *Local Column* must have a primary key or unique constraint. The default is a unique constraint. Please note that this field is visible only when the selected *Local Column* does not have either of the mentioned constraints.
* *Referenced Table* is the table that is being referred and has the *one* end point.
* *Referenced Column* the column that is being referred.
The One to Many Link Dialog
***************************
@@ -240,7 +272,7 @@ The table link shows relationship between tables:
* The single line endpoint of the link shows the column that is being referred.
* The three line endpoint of the link shows the column that refers.
* If one of the columns that is being referred or that refers is removed from the table then the link will get dropped.
* you can click on the link and drag to move on the canvas.
* You can click on the link and drag to move on the canvas.
The Table Notes
+1 -1
View File
@@ -67,7 +67,7 @@ in the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Event Trigger* dialog generate a generate a SQL command.
Your entries in the *Event Trigger* dialog generate a SQL command.
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
SQL command.
+91
View File
@@ -0,0 +1,91 @@
.. _export_data_using_query:
***************************************
`Export Data Using Query Dialog`:index:
***************************************
Use the *Export Data Using Query* dialog to copy data to a file.
The *Export Data Using Query* dialog organizes the export of data through the
*General*, *Options* and *Query* tabs.
.. image:: images/export_query_general.png
:alt: Export data using query dialog general tab
:align: center
Use the fields in the *General* tab to specify export preferences:
* Enter the name of the target file in the *Filename* field.
Optionally, select the *Browse* icon (ellipsis) to the right to navigate
into a directory and select a file.
* Use the drop-down listbox in the *Format* field to specify the file type.
Select:
* *binary* for a .bin file.
* *csv* for a .csv file.
* *text* for a .txt file.
* Use the drop-down listbox in the *Encoding* field to specify the type of
character encoding.
.. image:: images/export_query_options.png
:alt: Export data using query dialog options tab
:align: center
* Use the fields in the *Options* tab to specify additional information:
* Move the *Header* switch to the *Yes* position to include the table header
with the data rows. If you include the table header, the first row of the
file will contain the column names.
* If you are exporting data, specify the delimiter that will separate the
columns within the target file in the *Delimiter* field. The separating
character can be a colon, semicolon, a vertical bar, or a tab.
* Specify a quoting character used in the *Quote* field. Quoting can be
applied to string columns only (i.e. numeric columns will not be quoted)
or all columns regardless of data type. The character used for quoting can
be a single quote or a double quote.
* Specify a character that should appear before a data character that matches
the *QUOTE* value in the *Escape* field.
* Use the *NULL String* field to specify a string that will represent a null
value within the source or target file.
Click the *Query* tab to continue.
.. image:: images/export_query.png
:alt: Export data using query dialog query tab
:align: center
Use the fields in the *Query* tab to write the query that will be exported:
* Use the *Export Data Query* field to specify a SELECT, VALUES, INSERT, UPDATE,
DELETE, or MERGE command whose results are to be copied.
* Use *Force Quote columns* field to forces quoting to be used for all non-NULL
values in each specified column. NULL output is never quoted. This is a creatable
select control. If you would like to quote all columns then provide only '*' in
the field.
After completing the *Export Data Using Query* dialog, click the *OK* button to
perform the export. pgAdmin will notify you when the background
process completes:
.. image:: images/export_query_complete.png
:alt: Export data using query completion notification
:align: center
Use the *View Processes* button on the notification to open the *Process
Watcher* and review detailed information about the execution of the command
that performed the export:
Use the **End Process** button to end the Export process.
.. image:: images/export_query_pw.png
:alt: Export data using query process watcher
:align: center
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the exported file on the client machine .
.. |sm_icon| image:: images/sm_icon.png
+4 -1
View File
@@ -23,6 +23,9 @@ Use the fields in the *General* tab to identify an extension:
* Use the drop-down listbox in the *Name* field to select the extension. Each
extension must have a unique name.
* Move the switch next to *Cascade?* to the *Yes* position to automatically
install any extensions that this extension depends on that are not already
installed.
* Store notes about the extension in the *Comment* field.
Click the *Definition* tab to continue.
@@ -55,7 +58,7 @@ the *Extension* dialog:
:align: center
The command creates the *adminpack* extension in the *public* schema. It is
version *1.0* of *adminpack*.
version *2.0* of *adminpack*.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
+1 -1
View File
@@ -131,7 +131,7 @@ function. Click the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
* Specify a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
+10 -5
View File
@@ -35,10 +35,15 @@ Click the *Definition* tab to continue.
Use the fields in the *Definition* tab to define the function:
* Move the *Custom return type?* switch to provide a user defined return type.
* Use the drop-down listbox next to *Return type* to select the data type
returned by the function, if any.
returned by the function, if any. If *Custom return type?* is enabled this field
will change to an input text field.
* Use the drop-down listbox next to *Language* to select the implementation
language. The default is *sql*.
* Use the drop-down listbox next to *Depends on extensions* to select the extension that this function
depends on (for example, plpgsql). If set, dropping the extension will automatically drop the
function as well.
* Use the fields in the *Arguments* to define an argument. Click the *Add*
icon (+) to set parameters and values for the argument:
@@ -151,7 +156,7 @@ function. Click the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
* Specify a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
@@ -162,7 +167,7 @@ in the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Function* dialog generate a generate a SQL command (see an
Your entries in the *Function* dialog generate a SQL command (see an
example below). Use the *SQL* tab for review; revisit or switch tabs to make any
changes to the SQL command.
@@ -176,8 +181,8 @@ the *Function* dialog:
:alt: Function dialog sql tab
:align: center
The example demonstrates creating an *plpgsql* function named *hire_salesmen*. The
function have three columns (p_ename, p_sal and p_comm).
The example demonstrates creating a *plpgsql* function named *hire_salesmen*. The
function has three columns (p_ename, p_sal and p_comm).
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
+1 -1
View File
@@ -46,7 +46,7 @@ Use the fields in the *Privileges Selection* window to grant
privileges. If you grant a privilege WITH GRANT OPTION, the Grantee will have
the right to grant privileges on the object to others. If WITH GRANT OPTION is
subsequently revoked, any role who received access to that object from that
Grantee (directly or through a chain of grants) will lose thier privileges on
Grantee (directly or through a chain of grants) will lose their privileges on
the object.
* Click the *Add* icon (+) to assign a set of privileges.
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Loaded 100 of 4822 files, more files were not shown because too many files have changed in this diff. Show more