Compare commits

...
39 Commits
Author SHA1 Message Date
Akshay Joshi 7066841467 A permission issue in the NWJS binaries and files caused pgAdmin not to work. Grant the appropriate permission explicitly. 2022-05-31 16:02:21 +05:30
Akshay Joshi c0c9543323 Update version for release. 2022-05-30 17:07:28 +05:30
Aditya Toshniwal 4c50940634 Fixed some issues related to the dropdown background color. Fixes #7374 2022-05-30 17:05:48 +05:30
Pradip Parkale f7836b67af Fixed the loader issue for the Statistics and Properties panel. Fixed column resizing for dependent and dependencies panels.
refs #7364
2022-05-30 12:58:24 +05:30
Nikhil Mohite e3225b6565 Fixed the browser tree overlapping nodes and expansion issue. Fixes #6962 2022-05-28 13:26:17 +05:30
Domenico Sgarbossa 0bbe35a7f6 Update Italian translation. 2022-05-28 13:21:20 +05:30
Akshay Joshi 662d0d5699 Update message catalogs. 2022-05-26 18:56:03 +05:30
Akshay Joshi 8f72beb9d6 Update Dependencies. 2022-05-26 18:52:16 +05:30
Aditya Toshniwal b507eb8857 Fixed an issue when switching between connections in the Query Tool dropdown,
the background and foreground colors should be changed. Fixes #7374
2022-05-26 15:31:18 +05:30
Aditya Toshniwal aaab5c51a7 Fixed an issue where the data grid scroll is not reset when a query is executed. 2022-05-25 17:53:52 +05:30
Khushboo Vashi 955bb22cd1 Fixed an issue when a table has a column with an array type with length or
precision, the column type is not selected while editing the table. Fixes #7408
2022-05-25 17:49:06 +05:30
Akshay Joshi 37b19e0be2 Added PG/EPAS 15 and removed 9.6 from the binary path entry in the preferences dialog. 2022-05-25 17:43:48 +05:30
Pradip Parkale a5ad956088 Ensure that when Authentication buttons are disabled their text is visible in the Dark and High contrast theme. Fixes #7347 2022-05-24 17:12:37 +05:30
Aditya Toshniwal 1e1e1f027a Fixed an issue where geometry is not visible when a single cell is selected. Fixes #7394 2022-05-24 17:08:02 +05:30
Akshay Joshi 2c013c9f0f Fixed RESQL test case for Domain and add missing 'COMMENT ON CONSTRAINT' statements. 2022-05-24 16:51:01 +05:30
Aditya Toshniwal c5ca45c461 Ensure that null values are accepted for the numeric columns in react-data-grid. Fixes #7405 2022-05-24 15:02:06 +05:30
Aditya Toshniwal 04fa7dee68 Added missing toggle case keyboard shortcuts to the query tool. Fixes #7399 2022-05-24 14:54:43 +05:30
Akshay Joshi efe613d13e Fixed an issue where comments on domain constraints were not visible when selecting a domain node. Fixes #7403 2022-05-24 14:50:33 +05:30
Pradip Parkale befd4b1fa8 Fixed feature test cases. 2022-05-24 11:43:57 +05:30
Aditya Toshniwal 6d26d5833f Added support for multi-cell selection in the query tool grid. Fixes #7380 2022-05-24 11:39:34 +05:30
Khushboo Vashi 345cfd7c60 Ensure that unwanted APIs should not be getting called for BigAnimal. Fixes #7368
Updated the BigAnimal icon.
2022-05-24 11:34:23 +05:30
Akshay Joshi c956f730e9 Update notistack to the latest version. Fixes #7396 2022-05-23 18:20:56 +05:30
Akshay Joshi 5f81d2b4b1 The community has fixed the blocking issue at startup, so unpin the NWjs version and pick the latest. 2022-05-23 17:54:09 +05:30
Akshay Joshi 8f020c1ee6 Fixed jasmine test cases. 2022-05-23 16:48:53 +05:30
Akshay Joshi 4f7bcc2919 Added the ability to detect and warn users about bidirectional Unicode characters. Fixes #7002 2022-05-23 16:04:21 +05:30
Akshay Joshi 50b1ba5c80 Ensure that Dashboard graphs should be refreshed on changing the node from the browser tree. Fixes #7402 2022-05-23 13:26:40 +05:30
Pradip Parkale 11cfea3860 Added the ability to resize columns on dashboard tables. Fixes #7364 2022-05-18 17:49:54 +05:30
Aditya Toshniwal 5e0dfff42a Ensure that the editor position should not get changed once it is opened. Fixes #7393 2022-05-18 13:52:09 +05:30
Akshay Joshi 53bd2c2dc6 Ensure that when the user presses the Enter key on the connect to server dialog, it should work. 2022-05-18 12:08:37 +05:30
Akshay Joshi 6820b85902 Fixed Resource Group API test case. 2022-05-18 11:14:17 +05:30
Akshay Joshi b36004b702 The following are the initial fixes for PG15:
1) From PG 15 onward, the datlastsysoid has been removed from the table pg_database.
    We have added the constant _DATABASE_LAST_SYSTEM_OID = 16383, all the objects below
    this value are considered to be system objects. Modified the pgAdmin logic accordingly.

 2) Concatenation operator '||' needs a specific typecast to be applied to query variables. Modified SQL's accordingly.

Fixes #7283
2022-05-17 20:32:17 +05:30
Pradip Parkale 6465dc951c Fixed feature test case failed as a result of converting preferences and other dialogs to React. 2022-05-17 19:06:24 +05:30
Aditya Toshniwal 2d8aff6ca0 Fixed an issue with geometry window zoom mouse scroll not working. Fixes #7373 2022-05-17 18:58:49 +05:30
Aditya Toshniwal fbe7b56054 Fixed an issue where a popup for unsaved changes appears when clicking on the
open file button for a blank query editor. Fixes #7376
2022-05-17 18:56:15 +05:30
Aditya Toshniwal cb05d2924f Fixed an issue where an error message fills the entire window if the query is long. Fixes #7388 2022-05-17 18:52:19 +05:30
Nikhil Mohite ae0624ae8a Fixed an issue where Preferences are not saved when the dialog is maximized. Fixes #7383 2022-05-17 11:06:14 +05:30
Akshay Joshi 44f9ba4a57 Port connect server password dialog to React. Fixes #7337 2022-05-16 16:21:14 +05:30
Dave Page 7686c33cbd Tell Docker to always pull the latest base images when building containers.
Fixes #7372
2022-05-13 13:55:41 +01:00
Aditya Toshniwal ca8e14455f Fixed the following issues:
1. Feature test cases for the new query tool.
 2. Query tool panel rename is not persisting.
2022-05-12 18:29:09 +05:30
177 changed files with 11890 additions and 10606 deletions

No files matched your search

+74 -4
View File
@@ -161,6 +161,9 @@ Name Version
@mui/system 5.5.3 MIT https://github.com/mui/material-ui.git
@mui/types 7.1.3 MIT https://github.com/mui/material-ui.git
@mui/utils 5.5.3 MIT https://github.com/mui/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
@popperjs/core 2.11.4 MIT https://github.com/popperjs/popper-core.git
@popperjs/core 2.10.2 MIT https://github.com/popperjs/popper-core.git
@projectstorm/geometry 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@@ -177,7 +180,9 @@ Name Version
@tippyjs/react 4.2.6 MIT git+https://github.com/atomiks/tippyjs-react.git
@types/classnames 2.3.1 MIT Unknown
@types/json-schema 7.0.9 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/minimist 1.2.2 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/node 16.11.6 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/normalize-package-data 2.4.1 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/prop-types 15.7.4 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react 16.14.10 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react 16.14.20 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@@ -194,6 +199,8 @@ ajv-keywords 3.5.2
alertifyjs 1.7.1 MIT git@github.com:MohammadYounes/AlertifyJS.git
alphanum-sort 1.0.2 MIT https://github.com/TrySound/alphanum-sort.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
@@ -221,8 +228,11 @@ bootstrap4-toggle 3.6.1
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.17.6 MIT https://github.com/browserslist/browserslist.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.0 MIT git://github.com/substack/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
@@ -260,8 +270,12 @@ dagre 0.8.5
date-fns 2.25.0 MIT https://github.com/date-fns/date-fns
debug 4.3.2 MIT git://github.com/visionmedia/debug.git
debug 4.3.3 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.0 MIT https://github.com/dsblv/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
dom-align 1.12.2 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.3.2 MIT git://github.com/cheeriojs/dom-renderer.git
@@ -269,29 +283,45 @@ dropzone 5.9.3
emojis-list 3.0.0 MIT git+https://github.com/kikobeats/emojis-list.git
engine.io-client 6.0.2 MIT https://github.com/socketio/engine.io-client.git
engine.io-parser 5.0.3 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
fast-deep-equal 3.1.3 MIT git+https://github.com/epoberezkin/fast-deep-equal.git
fast-glob 3.2.11 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
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-up 5.0.0 MIT https://github.com/sindresorhus/find-up.git
follow-redirects 1.14.8 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
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-cors 1.1.0 MIT git://github.com/component/has-cors.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
history 5.3.0 MIT https://github.com/remix-run/history.git
html-escaper 2.0.2 MIT https://github.com/WebReflection/html-escaper.git
html2canvas 1.3.2 MIT git@github.com:niklasvh/html2canvas.git
ignore 5.2.0 MIT git@github.com:kaelzhang/node-ignore.git
immutability-helper 3.1.1 MIT git+https://github.com/kolodny/immutability-helper.git
imports-loader 2.0.0 MIT https://github.com/webpack-contrib/imports-loader.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-absolute-url 3.0.3 MIT https://github.com/sindresorhus/is-absolute-url.git
is-any-array 1.0.1 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.9.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
@@ -302,6 +332,7 @@ js-tokens 4.0.0
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.0.2 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
@@ -317,19 +348,29 @@ jss-plugin-props-sort 10.8.2
jss-plugin-rule-value-function 10.8.2 MIT https://github.com/cssinjs/jss
jss-plugin-vendor-prefixer 10.8.2 MIT https://github.com/cssinjs/jss
karma-coverage 2.0.3 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.3 MIT https://github.com/antonk52/lilconfig
lines-and-columns 1.1.6 MIT https://github.com/eventualbuddha/lines-and-columns.git
loader-utils 2.0.2 MIT https://github.com/webpack/loader-utils.git
loader-utils 1.4.0 MIT https://github.com/webpack/loader-utils.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.memoize 4.1.2 MIT https://github.com/lodash/lodash.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
lunr 0.7.2 MIT https://github.com/olivernn/lunr.js.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.2 MIT https://github.com/sindresorhus/meow.git
merge2 1.4.1 MIT git@github.com:teambition/merge2.git
micromatch 4.0.4 MIT https://github.com/micromatch/micromatch.git
mime 2.5.2 MIT https://github.com/broofa/mime
min-indent 1.0.1 MIT https://github.com/thejameskyle/min-indent
minimist 1.2.6 MIT git://github.com/substack/minimist.git
minimist-options 4.1.0 MIT https://github.com/vadimdemedes/minimist-options.git
ml-array-max 1.2.3 MIT git+https://github.com/mljs/array.git
ml-array-min 1.2.2 MIT git+https://github.com/mljs/array.git
ml-array-rescale 1.3.6 MIT git+https://github.com/mljs/array.git
@@ -345,16 +386,22 @@ nanopop 2.1.0
node-releases 2.0.1 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
notistack 2.0.5 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
parse-json 5.2.0 MIT https://github.com/sindresorhus/parse-json.git
parseqs 0.0.6 MIT https://github.com/get/querystring.git
parseuri 0.0.6 MIT https://github.com/get/parseuri.git
path-exists 4.0.0 MIT https://github.com/sindresorhus/path-exists.git
path-fx 2.1.1 MIT git+https://github.com/NeekSandhu/path-fx.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
pgadmin4-tree 1.0.0 MIT Unknown
picomatch 2.3.0 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
@@ -391,6 +438,8 @@ postcss-unique-selectors 5.0.1
postcss-value-parser 4.1.0 MIT https://github.com/TrySound/postcss-value-parser.git
prop-types 15.7.2 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.11 MIT git@github.com:react-component/align.git
rc-dropdown 3.3.0 MIT git@github.com:react-component/dropdown.git
@@ -422,10 +471,15 @@ react-table 7.7.0
react-transition-state 1.1.3 MIT https://github.com/szhsin/react-transition-state.git
react-virtualized-auto-sizer 1.0.6 MIT https://github.com/bvaughn/react-virtualized-auto-sizer.git
react-window 1.8.6 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
regenerator-runtime 0.13.9 MIT https://github.com/facebook/regenerator/tree/master/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
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
safe-buffer 5.1.2 MIT git://github.com/feross/safe-buffer.git
scheduler 0.19.1 MIT https://github.com/facebook/react.git
scheduler 0.20.2 MIT https://github.com/facebook/react.git
@@ -434,14 +488,17 @@ schema-utils 1.0.0
select2 4.0.13 MIT git://github.com/select2/select2.git
shallowequal 1.1.0 MIT https://github.com/dashed/shallowequal.git
shim-loader 1.0.1 MIT https://github.com/zinserjan/shim-loader
slash 4.0.0 MIT https://github.com/sindresorhus/slash.git
slickgrid 2.3.16 MIT git+https://github.com/6pac/SlickGrid.git
snapsvg-cjs 0.0.6 MIT git+https://github.com/geelen/Snap.svg-cjs.git
socket.io-client 4.3.2 MIT https://github.com/socketio/socket.io-client.git
socket.io-parser 4.1.1 MIT https://github.com/socketio/socket.io-parser.git
source-list-map 1.1.2 MIT https://github.com/webpack/source-list-map.git
spdx-expression-parse 3.0.1 MIT https://github.com/jslicense/spdx-expression-parse.js.git
split.js 1.6.4 MIT https://github.com/nathancahill/split
stable 0.1.8 MIT https://github.com/Two-Screen/stable.git
strip-comments 2.0.1 MIT https://github.com/jonschlinkert/strip-comments.git
strip-indent 4.0.0 MIT https://github.com/sindresorhus/strip-indent.git
styled-components 5.3.3 MIT git+https://github.com/styled-components/styled-components.git
stylehacks 5.0.1 MIT https://github.com/cssnano/cssnano.git
stylis 4.0.13 MIT https://github.com/thysultan/stylis.js
@@ -457,6 +514,8 @@ tiny-emitter 2.1.0
tiny-warning 1.0.3 MIT https://github.com/alexreardon/tiny-warning.git
tippy.js 6.3.5 MIT git+https://github.com/atomiks/tippyjs.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
underscore 1.13.1 MIT git://github.com/jashkenas/underscore.git
uniqs 2.0.0 MIT git://github.com/fgnass/uniqs.git
@@ -474,6 +533,7 @@ xterm-addon-fit 0.5.0
xterm-addon-search 0.8.1 MIT https://github.com/xtermjs/xterm.js
xterm-addon-web-links 0.4.0 MIT https://github.com/xtermjs/xterm.js
yeast 0.1.2 MIT https://github.com/unshiftio/yeast.git
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.2 Hippocratic-2.1 https://github.com/PaulLeCam/react-leaflet.git
@@ -483,6 +543,9 @@ boolbase 1.0.0
css-color-keywords 1.0.0 ISC https://github.com/sonicdoe/css-color-keywords.git
css-declaration-sorter 6.1.3 ISC https://github.com/Siilwyn/css-declaration-sorter.git
electron-to-chromium 1.3.889 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
icss-utils 5.1.0 ISC git+https://github.com/css-modules/icss-utils.git
is-resolvable 1.1.0 ISC https://github.com/shinnn/is-resolvable.git
jsonrepair 2.2.1 ISC https://github.com/josdejong/jsonrepair.git
@@ -498,6 +561,7 @@ semver 6.3.0
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.4.13 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
@@ -511,6 +575,7 @@ source-map 0.5.7
source-map 0.6.1 BSD-3-Clause http://github.com/mozilla/source-map.git
source-map-js 0.6.2 BSD-3-Clause http://github.com/7rulnik/source-map.git
sprintf-js 1.1.2 BSD-3-Clause https://github.com/alexei/sprintf.js.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.15.0 Apache-2.0 git://github.com/jmespath/jmespath.js
@@ -519,8 +584,9 @@ paths-js 0.4.11
rc-dock 3.2.10 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
caniuse-lite 1.0.30001278 CC-BY-4.0 https://github.com/browserslist/caniuse-lite.git
caniuse-lite 1.0.30001309 CC-BY-4.0 https://github.com/browserslist/caniuse-lite.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
caniuse-lite 1.0.30001338 CC-BY-4.0 https://github.com/browserslist/caniuse-lite.git
css-select 4.1.3 BSD-2-Clause git://github.com/fb55/css-select.git
css-what 5.1.0 BSD-2-Clause https://github.com/fb55/css-what
domelementtype 2.2.0 BSD-2-Clause git://github.com/fb55/domelementtype.git
@@ -528,17 +594,21 @@ domhandler 4.2.2
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.7.1 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.0.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.11 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
precond 0.2.3 MIT* https://github.com/MathieuTurcotte/node-precond.git
webcabin-docker 2.2.5 MIT* Unknown
spdx-exceptions 2.3.0 CC-BY-3.0 https://github.com/kemitchell/spdx-exceptions.json.git
tablesorter 2.31.3 (MIT OR GPL-2.0) git://github.com/Mottie/tablesorter.git
tslib 2.3.0 0BSD https://github.com/Microsoft/tslib.git
type-fest 1.4.0 (MIT OR CC0-1.0) https://github.com/sindresorhus/type-fest.git
464 dependencies listed.
534 dependencies listed.
+4 -9
View File
@@ -273,15 +273,10 @@ REM Main build sequence Ends
REM YARN END
REM WGET
REM Comment out the below for loop as the latest version (0.62.0) having
REM some problem, so for the time being hardcoded the version to 0.61.0
REM FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_VERSION=%%i"
REM :GET_NW
REM wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
REM IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
SET "NW_VERSION=0.61.0"
wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_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"
IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
tar -C "%TMPDIR%" -xvf "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" || EXIT /B 1
REM WGET END
+1 -1
View File
@@ -122,7 +122,7 @@ debian:
docker:
echo $(APP_NAME)
docker build -t ${APP_NAME} -t $(APP_NAME):latest -t $(APP_NAME):$(APP_RELEASE) -t $(APP_NAME):$(APP_RELEASE).$(APP_REVISION) .
docker build --pull -t ${APP_NAME} -t $(APP_NAME):latest -t $(APP_NAME):$(APP_RELEASE) -t $(APP_NAME):$(APP_RELEASE).$(APP_REVISION) .
docs:
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx html
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 46 KiB

+1
View File
@@ -11,6 +11,7 @@ notes for it.
.. toctree::
:maxdepth: 1
release_notes_6_10
release_notes_6_9
release_notes_6_8
release_notes_6_7
+40
View File
@@ -0,0 +1,40 @@
************
Version 6.10
************
Release date: 2022-06-02
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v6.9.
New features
************
| `Issue #7364 <https://redmine.postgresql.org/issues/7364>`_ - Added the ability to resize columns on dashboard tables.
Housekeeping
************
| `Issue #7283 <https://redmine.postgresql.org/issues/7283>`_ - PG 15 compatibility issues fixed.
| `Issue #7337 <https://redmine.postgresql.org/issues/7337>`_ - Port connect server password dialog to React.
Bug fixes
*********
| `Issue #6962 <https://redmine.postgresql.org/issues/6962>`_ - Fixed the browser tree overlapping nodes and expansion issue.
| `Issue #7002 <https://redmine.postgresql.org/issues/7002>`_ - Added the ability to detect and warn users about bidirectional Unicode characters.
| `Issue #7347 <https://redmine.postgresql.org/issues/7347>`_ - Ensure that when Authentication buttons are disabled their text is visible in the Dark and High contrast theme.
| `Issue #7368 <https://redmine.postgresql.org/issues/7368>`_ - Ensure that unwanted APIs should not be getting called for BigAnimal.
| `Issue #7372 <https://redmine.postgresql.org/issues/7372>`_ - Tell Docker to always pull the latest base images when building containers.
| `Issue #7373 <https://redmine.postgresql.org/issues/7373>`_ - Fixed an issue with geometry window zoom mouse scroll not working.
| `Issue #7374 <https://redmine.postgresql.org/issues/7374>`_ - Fixed an issue when switching between connections in the Query Tool dropdown, the background and foreground colors should be changed.
| `Issue #7376 <https://redmine.postgresql.org/issues/7376>`_ - Fixed an issue where a popup for unsaved changes appears when clicking on the open file button for a blank query editor.
| `Issue #7380 <https://redmine.postgresql.org/issues/7380>`_ - Added support for multi-cell selection in the query tool grid.
| `Issue #7383 <https://redmine.postgresql.org/issues/7383>`_ - Fixed an issue where Preferences are not saved when the dialog is maximized.
| `Issue #7388 <https://redmine.postgresql.org/issues/7388>`_ - Fixed an issue where an error message fills the entire window if the query is long.
| `Issue #7393 <https://redmine.postgresql.org/issues/7393>`_ - Ensure that the editor position should not get changed once it is opened.
| `Issue #7394 <https://redmine.postgresql.org/issues/7394>`_ - Fixed an issue where geometry is not visible when a single cell is selected.
| `Issue #7399 <https://redmine.postgresql.org/issues/7399>`_ - Added missing toggle case keyboard shortcuts to the query tool.
| `Issue #7402 <https://redmine.postgresql.org/issues/7402>`_ - Ensure that Dashboard graphs should be refreshed on changing the node from the browser tree.
| `Issue #7403 <https://redmine.postgresql.org/issues/7403>`_ - Fixed an issue where comments on domain constraints were not visible when selecting a domain node.
| `Issue #7405 <https://redmine.postgresql.org/issues/7405>`_ - Ensure that null values are accepted for the numeric columns in react-data-grid.
| `Issue #7408 <https://redmine.postgresql.org/issues/7408>`_ - Fixed an issue when a table has a column with an array type with length or precision, the column type is not selected while editing the table.
+8 -4
View File
@@ -128,10 +128,7 @@ _build_runtime() {
# YARN END
# WGET:
# Comment out the below line as the latest version (0.62.0) having some
# problem, so for the time being hardcoded the version to 0.61.0
# NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
NW_VERSION="0.61.0"
NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
pushd "${BUILDROOT}" > /dev/null
while true;do
@@ -145,6 +142,13 @@ _build_runtime() {
# Copy nwjs into the staging directory
mkdir -p "${DESKTOPROOT}/usr/${APP_NAME}/bin"
# The chmod command below is needed to fix the permission issue of
# the NWjs binaries and files.
# Change the permission for others and group the same as the owner
chmod -R og=u "${BUILDROOT}/nwjs-v${NW_VERSION}-linux-x64"/*
# Explicitly remove write permissions for others and group
chmod -R og-w "${BUILDROOT}/nwjs-v${NW_VERSION}-linux-x64"/*
# YARN:
# cp -r "${BUILDROOT}/node_modules/nw/nwjs"/* "${DESKTOPROOT}/usr/${APP_NAME}/bin"
# YARN END
+1 -4
View File
@@ -33,10 +33,7 @@ _build_runtime() {
# YARN END
# WGET:
# Comment out the below line as the latest version (0.62.0) having some
# problem, so for the time being hardcoded the version to 0.61.0
# NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
NW_VERSION="0.61.0"
NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
pushd "${BUILD_ROOT}" > /dev/null
while true;do
+1 -1
View File
@@ -24,7 +24,7 @@
},
"devDependencies": {
"eslint": "^6.3.0",
"nw": "0.61.0"
"nw": "^0.64.0"
},
"scripts": {
"linter": "yarn eslint --no-eslintrc -c .eslintrc.js --ext .js ."
+4 -4
View File
@@ -1008,10 +1008,10 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
nw@0.61.0:
version "0.61.0"
resolved "https://registry.yarnpkg.com/nw/-/nw-0.61.0.tgz#c35e80be4ad7a5570659796d66bdc16d11e0e890"
integrity sha512-SazcPW9+kplf7/K2KuTaamOFGtKnnH4Gs/cHHRMf9luTkCGe2cFsnb6/fEP5xvu9tpoW9Z/oUKzj9lZ6kylFWQ==
nw@^0.64.0:
version "0.64.1"
resolved "https://registry.yarnpkg.com/nw/-/nw-0.64.1.tgz#eaf96dd22081a679316b86d31405a54b37ba7181"
integrity sha512-+h1qQlhBdW56Xbe5EVojb2zfjo/fccM7rzecHTiNBl++FHA3nAGxn2UrwmqpUa+v/mQ5+EUFXpBlmkbl4y4fEg==
dependencies:
chalk "~1.1.3"
decompress "^4.2.0"
+5 -5
View File
@@ -43,7 +43,7 @@ APP_ICON = 'pg-icon'
# Application version number components
APP_RELEASE = 6
APP_REVISION = 9
APP_REVISION = 10
# Application version suffix, e.g. 'beta1', 'dev'. Usually an empty string
# for GA releases.
@@ -52,7 +52,7 @@ APP_SUFFIX = ''
# Numeric application version for upgrade checks. Should be in the format:
# [X]XYYZZ, where X is the release version, Y is the revision, with a leading
# zero if needed, and Z represents the suffix, with a leading zero if needed
APP_VERSION_INT = 60900
APP_VERSION_INT = 61000
# DO NOT CHANGE!
# The application version string, constructed from the components
@@ -447,19 +447,19 @@ STORAGE_DIR = os.path.join(DATA_DIR, 'storage')
##########################################################################
DEFAULT_BINARY_PATHS = {
"pg": "",
"pg-9.6": "",
"pg-10": "",
"pg-11": "",
"pg-12": "",
"pg-13": "",
"pg-14": "",
"pg-15": "",
"ppas": "",
"ppas-9.6": "",
"ppas-10": "",
"ppas-11": "",
"ppas-12": "",
"ppas-13": "",
"ppas-14": ""
"ppas-14": "",
"ppas-15": ""
}
##########################################################################
+4 -3
View File
@@ -97,6 +97,7 @@
"@types/react-dom": "^16.0.11",
"ajv": "^8.8.2",
"alertifyjs": "git+https://github.com/EnterpriseDB/AlertifyJS/#72c1d794f5b6d4ec13a68d123c08f19021afe263",
"anti-trojan-source": "^1.4.0",
"aspen-decorations": "^1.0.2",
"axios": "^0.21.1",
"babelify": "~10.0.0",
@@ -140,18 +141,18 @@
"moment-timezone": "^0.5.34",
"mousetrap": "^1.6.3",
"notificar": "^1.0.1",
"notistack": "^1.0.10",
"notistack": "^2.0.0",
"path-fx": "^2.0.0",
"pathfinding": "^0.4.18",
"paths-js": "^0.4.9",
"pgadmin4-tree": "git+https://github.com/EnterpriseDB/pgadmin4-treeview/#2c288ccc0ae0c98b41e56e79abf1204be3861702",
"pgadmin4-tree": "git+https://github.com/EnterpriseDB/pgadmin4-treeview/#b0287d39b54de28cb2a83f0c19a95ce823f6feae",
"postcss": "^8.2.15",
"raf": "^3.4.1",
"rc-dock": "^3.2.9",
"react": "^17.0.1",
"react-aspen": "^1.1.0",
"react-checkbox-tree": "^1.7.2",
"react-data-grid": "git+https://github.com/adityatoshniwal/react-data-grid.git/#1dc310dfaf5afea359404e867b7cf54953f47d1e",
"react-data-grid": "git+https://github.com/adityatoshniwal/react-data-grid.git/#8d9bc16ddd7c419acfbbd1c1cc2b70eb9f5b453c",
"react-dom": "^17.0.1",
"react-draggable": "^4.4.4",
"react-leaflet": "^3.2.2",
@@ -1284,7 +1284,7 @@ class ServerNode(PGChildNodeView):
}
)
def connect(self, gid, sid, user_name=None, resp_json=False):
def connect(self, gid, sid):
"""
Connect the Server and return the connection object.
Verification Process before Connection:
@@ -1410,8 +1410,7 @@ class ServerNode(PGChildNodeView):
# not provided, or password has not been saved earlier.
if prompt_password or prompt_tunnel_password:
return self.get_response_for_password(
server, 428, prompt_password, prompt_tunnel_password,
user=user_name, resp_json=resp_json
server, 428, prompt_password, prompt_tunnel_password
)
status = True
@@ -1427,8 +1426,7 @@ class ServerNode(PGChildNodeView):
except Exception as e:
current_app.logger.exception(e)
return self.get_response_for_password(
server, 401, True, True, getattr(e, 'message', str(e)),
resp_json=resp_json)
server, 401, True, True, getattr(e, 'message', str(e)))
if not status:
@@ -1440,7 +1438,7 @@ class ServerNode(PGChildNodeView):
return internal_server_error(errmsg)
return self.get_response_for_password(
server, 401, True, True, errmsg, resp_json=resp_json
server, 401, True, True, errmsg
)
else:
if save_password and config.ALLOW_SAVE_PASSWORD:
@@ -1864,8 +1862,7 @@ class ServerNode(PGChildNodeView):
return internal_server_error(errormsg=str(e))
def get_response_for_password(self, server, status, prompt_password=False,
prompt_tunnel_password=False, errmsg=None,
user=None, resp_json=False):
prompt_tunnel_password=False, errmsg=None):
if server.use_ssh_tunnel:
data = {
@@ -1888,11 +1885,7 @@ class ServerNode(PGChildNodeView):
return make_json_response(
success=0,
status=status,
result=render_template(
'servers/tunnel_password.html',
_=gettext,
**data,
) if not resp_json else data
result=data
)
else:
data = {
@@ -1908,11 +1901,7 @@ class ServerNode(PGChildNodeView):
return make_json_response(
success=0,
status=status,
result=render_template(
'servers/password.html',
_=gettext,
**data
) if not resp_json else data
result=data
)
def clear_saved_password(self, gid, sid):
@@ -182,7 +182,6 @@ class DatabaseView(PGChildNodeView):
if self.manager is None:
return gone(errormsg=_("Could not find the server."))
self.datlastsysoid = 0
self.datistemplate = False
if action and action in ["drop"]:
self.conn = self.manager.connection()
@@ -193,8 +192,7 @@ class DatabaseView(PGChildNodeView):
# provide generic connection
if kwargs['did'] in self.manager.db_info:
self._db = self.manager.db_info[kwargs['did']]
self.datlastsysoid, self.datistemplate, \
datallowconn = \
self.datistemplate, datallowconn = \
get_attributes_from_db_info(self.manager, kwargs)
if datallowconn is False:
@@ -252,14 +250,10 @@ class DatabaseView(PGChildNodeView):
def retrieve_last_system_oid(self):
last_system_oid = 0
if self.blueprint.show_system_objects:
last_system_oid = 0
elif (
self.manager.db_info is not None and
self.manager.did in self.manager.db_info
):
last_system_oid = (self.manager.db_info[self.manager.did])[
'datlastsysoid']
if not self.blueprint.show_system_objects:
last_system_oid = self._DATABASE_LAST_SYSTEM_OID
return last_system_oid
def get_nodes(self, gid, sid, is_schema_diff=False):
@@ -269,8 +263,7 @@ class DatabaseView(PGChildNodeView):
# if is_schema_diff then no need to show system templates.
if is_schema_diff and self.manager.db_info is not None and \
self.manager.did in self.manager.db_info:
last_system_oid = \
self.manager.db_info[self.manager.did]['datlastsysoid']
last_system_oid = self._DATABASE_LAST_SYSTEM_OID
server_node_res = self.manager
@@ -436,7 +429,8 @@ class DatabaseView(PGChildNodeView):
result = res['rows'][0]
result['is_sys_obj'] = (
result['oid'] <= self.datlastsysoid or self.datistemplate)
result['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
# Fetching variable for database
SQL = render_template(
"/".join([self.template_path, 'get_variables.sql']),
@@ -210,11 +210,6 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare):
# Set template path for the SQL scripts
self.template_path = 'casts/sql/#{0}#'.format(self.manager.version)
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -238,7 +233,7 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare):
:return:
"""
last_system_oid = 0 if self.blueprint.show_system_objects else \
self.datlastsysoid
self._DATABASE_LAST_SYSTEM_OID
sql = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
datlastsysoid=last_system_oid,
@@ -270,7 +265,7 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare):
"""
res = []
last_system_oid = 0 if self.blueprint.show_system_objects else \
self.datlastsysoid
self._DATABASE_LAST_SYSTEM_OID
sql = render_template(
"/".join([self.template_path, self._NODES_SQL]),
@@ -348,7 +343,7 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare):
:return:
"""
last_system_oid = 0 if not self.blueprint.show_system_objects else \
self.datlastsysoid
self._DATABASE_LAST_SYSTEM_OID
sql = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
cid=cid,
@@ -407,7 +402,7 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare):
# we need oid to add object in tree at browser, below sql will
# gives the same
last_system_oid = 0 if self.blueprint.show_system_objects else \
self.datlastsysoid
self._DATABASE_LAST_SYSTEM_OID
sql = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
srctyp=data['srctyp'],
@@ -584,7 +579,7 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare):
"""
if cid is not None:
last_system_oid = 0 if self.blueprint.show_system_objects else \
self.datlastsysoid
self._DATABASE_LAST_SYSTEM_OID
sql = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
cid=cid,
@@ -769,13 +764,9 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare):
"""
res = dict()
last_system_oid = 0
if self.manager.db_info is not None and did in self.manager.db_info:
last_system_oid = (self.manager.db_info[did])['datlastsysoid']
sql = render_template(
"/".join([self.template_path, self._NODES_SQL]),
datlastsysoid=last_system_oid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
showsysobj=self.blueprint.show_system_objects,
schema_diff=True
)
@@ -196,11 +196,6 @@ class EventTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
self.conn = self.manager.connection(did=kwargs['did'])
self.template_path = 'event_triggers/sql/9.3_plus'
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -370,7 +365,7 @@ class EventTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
result = res['rows'][0]
result['is_sys_obj'] = (
result['oid'] <= self.datlastsysoid or
result['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
result = self._formatter(result)
@@ -139,11 +139,6 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare):
self.conn = self.manager.connection(did=kwargs['did'])
self.template_path = self.EXT_TEMPLATE_PATH
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -257,7 +252,8 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare):
)
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return True, res['rows'][0]
@@ -216,11 +216,6 @@ class ForeignDataWrapperView(PGChildNodeView, SchemaDiffObjectCompare):
)
self.conn = self.manager.connection(did=kwargs['did'])
self.qtIdent = driver.qtIdent
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -380,7 +375,8 @@ class ForeignDataWrapperView(PGChildNodeView, SchemaDiffObjectCompare):
)
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
if res['rows'][0]['fdwoptions'] is not None:
res['rows'][0]['fdwoptions'] = tokenize_options(
@@ -207,11 +207,6 @@ class ForeignServerView(PGChildNodeView, SchemaDiffObjectCompare):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -369,7 +364,8 @@ class ForeignServerView(PGChildNodeView, SchemaDiffObjectCompare):
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
if res['rows'][0]['fsrvoptions'] is not None:
res['rows'][0]['fsrvoptions'] = tokenize_options(
@@ -225,11 +225,6 @@ class UserMappingView(PGChildNodeView, SchemaDiffObjectCompare):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -388,7 +383,8 @@ class UserMappingView(PGChildNodeView, SchemaDiffObjectCompare):
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
if res['rows'][0]['umoptions'] is not None:
res['rows'][0]['umoptions'] = tokenize_options(
@@ -230,11 +230,6 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare):
self.driver = get_driver(PG_DEFAULT_DRIVER)
self.manager = self.driver.connection_manager(kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -378,7 +373,8 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare):
return False, gone(self._NOT_FOUND_LANG_INFORMATION)
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
sql = render_template(
"/".join([self.template_path, self._ACL_SQL]),
@@ -221,10 +221,6 @@ class PublicationView(PGChildNodeView, SchemaDiffObjectCompare):
self.driver = get_driver(PG_DEFAULT_DRIVER)
self.manager = self.driver.connection_manager(kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = self.manager.db_info[kwargs['did']][
'datlastsysoid'] if self.manager.db_info is not None \
and kwargs['did'] in self.manager.db_info else 0
# Set the template path for the SQL scripts
self.template_path = (
"publications/sql/#{0}#".format(self.manager.version)
@@ -140,11 +140,6 @@ def check_precondition(f):
return gone(errormsg=gettext("Could not find the server."))
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -571,7 +566,8 @@ It may have been removed by another user.
# Making copy of output for future use
copy_data = dict(res['rows'][0])
copy_data['is_sys_obj'] = (
copy_data['oid'] <= self.datlastsysoid or self.datistemplate)
copy_data['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
copy_data = self._formatter(copy_data, scid)
return ajax_response(
@@ -155,11 +155,6 @@ class AggregateView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -317,7 +312,7 @@ class AggregateView(PGChildNodeView):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
scid=scid, agid=agid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -327,7 +322,8 @@ class AggregateView(PGChildNodeView):
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return True, res['rows'][0]
@@ -146,11 +146,6 @@ class CatalogObjectView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -306,7 +301,8 @@ class CatalogObjectView(PGChildNodeView):
gettext("""Could not find the specified catalog object."""))
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=res['rows'][0],
@@ -173,11 +173,6 @@ class CatalogObjectColumnsView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -288,7 +283,7 @@ class CatalogObjectColumnsView(PGChildNodeView):
return gone(gettext("""Could not find the specified column."""))
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['attrelid'] <= self.datlastsysoid or
res['rows'][0]['attrelid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
@@ -192,11 +192,6 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -354,7 +349,7 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
scid=scid, coid=coid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -364,7 +359,8 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare):
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return True, res['rows'][0]
@@ -282,11 +282,6 @@ class DomainView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
# Get database connection
self.conn = self.manager.connection(did=kwargs['did'])
self.qtIdent = driver.qtIdent
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -458,7 +453,7 @@ It may have been removed by another user or moved to another schema.
# Set System Domain Status
data['sysdomain'] = False
if doid <= self.manager.db_info[did]['datlastsysoid'] or \
if doid <= self._DATABASE_LAST_SYSTEM_OID or \
self.datistemplate:
data['sysdomain'] = True
@@ -260,11 +260,6 @@ class DomainConstraintView(PGChildNodeView):
self.manager = driver.connection_manager(kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.qtIdent = driver.qtIdent
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -413,7 +408,8 @@ class DomainConstraintView(PGChildNodeView):
data = res['rows'][0]
data['is_sys_obj'] = (
data['oid'] <= self.datlastsysoid or self.datistemplate)
data['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=data,
status=200
@@ -17,6 +17,11 @@ ALTER DOMAIN {{ conn|qtIdent(data.basensp, data.name) }} OWNER TO {{ conn|qtIden
ALTER DOMAIN {{ conn|qtIdent(data.basensp, data.name) }}
ADD CONSTRAINT {{ conn|qtIdent(c.conname) }} CHECK ({{ c.consrc }}){% if not c.convalidated %} NOT VALID{% endif %}{% endif -%};
{% if c.description %}
COMMENT ON CONSTRAINT {{ conn|qtIdent(c.conname) }} ON DOMAIN {{ conn|qtIdent(data.basensp, data.name) }}
IS '{{ c.description }}';
{% endif %}
{% endfor -%}
{% endif %}
@@ -22,11 +22,21 @@ ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }} OWNER TO {% if data
ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }}
ADD CONSTRAINT {{ conn|qtIdent(c.conname) }} CHECK ({{ c.consrc }}){% if not c.convalidated %} NOT VALID{% endif %}{% endif -%};
{% if c.description %}
COMMENT ON CONSTRAINT {{ conn|qtIdent(c.conname) }} ON DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }}
IS '{{ c.description }}';
{% endif %}
{% endfor -%}
{% for c in data.constraints.changed %}{% if c.conname and c.consrc %}
ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }}
ADD CONSTRAINT {{ conn|qtIdent(c.conname) }} CHECK ({{ c.consrc }}){% if not c.convalidated %} NOT VALID{% endif %}{% endif -%};
{% if c.description %}
COMMENT ON CONSTRAINT {{ conn|qtIdent(c.conname) }} ON DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }}
IS '{{ c.description }}';
{% endif %}
{% endfor -%}
{% endif %}
@@ -65,6 +65,12 @@ ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }}
ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }}
ADD CONSTRAINT {{ conn|qtIdent(c.conname) }} CHECK ({{ c.consrc }}){% if not c.convalidated %} NOT VALID{% endif %}{% if c.connoinherit %} NO INHERIT{% endif -%};{% endif -%}
{% if c.description %}
COMMENT ON CONSTRAINT {{ conn|qtIdent(c.conname) }} ON DOMAIN {{ conn|qtIdent(o_data.basensp, name) }}
IS '{{ c.description }}';
{% endif %}
{% endfor -%}{% endif -%}
{% set seclabels = data.seclabels %}
{% if 'deleted' in seclabels and seclabels.deleted|length > 0 %}
@@ -383,11 +383,6 @@ class ForeignTableView(PGChildNodeView, DataTypeReader,
# Get database connection
self.conn = self.manager.connection(did=kwargs['did'])
self.qtIdent = driver.qtIdent
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = \
self.manager.db_info[kwargs['did']]['datistemplate'] \
if self.manager.db_info is not None and \
@@ -1191,7 +1186,8 @@ class ForeignTableView(PGChildNodeView, DataTypeReader,
data = res['rows'][0]
data['is_sys_obj'] = (
data['oid'] <= self.datlastsysoid or self.datistemplate)
data['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
if self.manager.version >= 90200:
# Fetch privileges
@@ -226,11 +226,6 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare):
self.manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(
kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -393,7 +388,8 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare):
)
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
# In edit mode fetch token/dictionary list also
sql = render_template(
@@ -782,7 +778,7 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare):
if not status:
return internal_server_error(errormsg=rset)
datlastsysoid = self.manager.db_info[did]['datlastsysoid']
datlastsysoid = self._DATABASE_LAST_SYSTEM_OID
# Empty set is added before actual list as initially it will be visible
# at parser control while creating a new FTS Configuration
@@ -817,7 +813,7 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare):
if not status:
return internal_server_error(errormsg=rset)
datlastsysoid = self.manager.db_info[did]['datlastsysoid']
datlastsysoid = self._DATABASE_LAST_SYSTEM_OID
# Empty set is added before actual list as initially it will be visible
# at copy_config control while creating a new FTS Configuration
@@ -215,11 +215,6 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare):
self.conn = self.manager.connection(did=kwargs['did'])
driver = get_driver(PG_DEFAULT_DRIVER)
self.qtIdent = driver.qtIdent
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -401,7 +396,8 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare):
))
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
# Handle templates and its schema name properly
if res['rows'][0]['template_schema'] is not None and \
@@ -229,11 +229,6 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare):
self.manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(
kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -358,7 +353,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare):
_("Could not find the FTS Parser node in the database node."))
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return True, res['rows'][0]
@check_precondition
@@ -209,11 +209,6 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare):
self.manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(
kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -332,7 +327,8 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare):
if len(res['rows']) == 0:
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return True, res['rows'][0]
@check_precondition
@@ -1609,12 +1609,12 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
# Set System Functions Status
resp_data['sysfunc'] = False
if fnid <= self.manager.db_info[did]['datlastsysoid']:
if fnid <= self._DATABASE_LAST_SYSTEM_OID:
resp_data['sysfunc'] = True
# Set System Functions Status
resp_data['sysproc'] = False
if fnid <= self.manager.db_info[did]['datlastsysoid']:
if fnid <= self._DATABASE_LAST_SYSTEM_OID:
resp_data['sysproc'] = True
# Get formatted Security Labels
@@ -154,11 +154,6 @@ class OperatorView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -316,7 +311,7 @@ class OperatorView(PGChildNodeView):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
scid=scid, opid=opid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -326,7 +321,8 @@ class OperatorView(PGChildNodeView):
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return True, res['rows'][0]
@@ -139,10 +139,6 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
self.conn = self.manager.connection(did=kwargs['did'])
else:
self.conn = self.manager.connection()
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -320,7 +316,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
for row in res['rows']:
sql = render_template(
@@ -206,10 +206,6 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
)
)
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -428,7 +424,7 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
return False, gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return True, res['rows'][0]
except Exception as e:
@@ -306,7 +306,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
@@ -1059,7 +1059,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1111,7 +1111,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1150,7 +1150,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1219,7 +1219,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1369,7 +1369,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1417,7 +1417,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1468,7 +1468,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1521,7 +1521,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1601,7 +1601,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
SQL = render_template("/".join(
[self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
sql = ''
@@ -184,7 +184,7 @@ def column_formatter(conn, tid, clid, data, edit_types_list=None,
edit_types_list = [row['typname'] for row in rset['rows']]
# We will need present type in edit mode
edit_types_list.append(data['cltype'])
edit_types_list.append(data['typname'])
data['edit_types'] = sorted(edit_types_list)
data['cltype'] = DataTypeReader.parse_type_name(data['cltype'])
@@ -263,13 +263,6 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
# We need datlastsysoid to check if current compound trigger
# is system trigger
self.datlastsysoid = self.manager.db_info[
kwargs['did']
]['datlastsysoid'] if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -451,7 +444,7 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
@@ -575,10 +568,10 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
# We will first fetch the compound trigger name for
# current request so that we create template for
# dropping compound trigger
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid)
SQL = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -637,7 +630,7 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
data['table'] = self.table
SQL, name = compound_trigger_utils.get_sql(
self.conn, data, tid, trid, self.datlastsysoid)
self.conn, data, tid, trid, self._DATABASE_LAST_SYSTEM_OID)
if not isinstance(SQL, str):
return SQL
SQL = SQL.strip('\n').strip(' ')
@@ -659,7 +652,7 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=new_trid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
@@ -716,7 +709,7 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
try:
sql, name = compound_trigger_utils.get_sql(
self.conn, data, tid, trid, self.datlastsysoid)
self.conn, data, tid, trid, self._DATABASE_LAST_SYSTEM_OID)
if not isinstance(sql, str):
return sql
sql = sql.strip('\n').strip(' ')
@@ -747,7 +740,7 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
try:
SQL = compound_trigger_utils.get_reverse_engineered_sql(
self.conn, schema=self.schema, table=self.table, tid=tid,
trid=trid, datlastsysoid=self.datlastsysoid)
trid=trid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
except Exception as e:
return internal_server_error(errormsg=str(e))
@@ -780,7 +773,7 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -885,10 +878,8 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
target_schema = kwargs.get('target_schema', None)
if data:
sql, name = compound_trigger_utils.get_sql(self.conn,
data,
tid, oid,
self.datlastsysoid)
sql, name = compound_trigger_utils.get_sql(
self.conn, data, tid, oid, self._DATABASE_LAST_SYSTEM_OID)
if not isinstance(sql, str):
return sql
sql = sql.strip('\n').strip(' ')
@@ -898,10 +889,10 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
scid=scid, tid=tid,
trid=oid, only_sql=True)
else:
sql = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=oid,
datlastsysoid=self.datlastsysoid)
sql = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
tid=tid, trid=oid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(sql)
if not status:
@@ -935,11 +926,8 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare):
if target_schema:
data['schema'] = target_schema
sql, name = compound_trigger_utils.get_sql(self.conn,
data,
tid,
None,
self.datlastsysoid)
sql, name = compound_trigger_utils.get_sql(
self.conn, data, tid, None, self._DATABASE_LAST_SYSTEM_OID)
# If compound trigger is disbaled then add sql
# code for the same
@@ -196,11 +196,6 @@ class CheckConstraintView(PGChildNodeView):
self.manager = driver.connection_manager(kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.qtIdent = driver.qtIdent
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -449,7 +444,8 @@ class CheckConstraintView(PGChildNodeView):
if cid:
result = res[0]
result['is_sys_obj'] = (
result['oid'] <= self.datlastsysoid or self.datistemplate)
result['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=result,
@@ -222,11 +222,6 @@ class ExclusionConstraintView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -285,7 +280,8 @@ class ExclusionConstraintView(PGChildNodeView):
if exid:
result = res[0]
result['is_sys_obj'] = (
result['oid'] <= self.datlastsysoid or self.datistemplate)
result['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=result,
@@ -229,11 +229,6 @@ class ForeignKeyConstraintView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -288,7 +283,8 @@ class ForeignKeyConstraintView(PGChildNodeView):
if fkid:
result = res[0]
result['is_sys_obj'] = (
result['oid'] <= self.datlastsysoid or self.datistemplate)
result['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=result,
@@ -242,11 +242,6 @@ class IndexConstraintView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = \
self.manager.db_info[kwargs['did']]['datlastsysoid'] \
if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -304,7 +299,8 @@ class IndexConstraintView(PGChildNodeView):
if cid:
result = res[0]
result['is_sys_obj'] = (
result['oid'] <= self.datlastsysoid or self.datistemplate)
result['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=result,
@@ -246,12 +246,6 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
# We need datlastsysoid to check if current index is system index
self.datlastsysoid = self.manager.db_info[
kwargs['did']
]['datlastsysoid'] if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.table_template_path = compile_template_path(
'tables/sql',
self.manager.server_type,
@@ -514,7 +508,8 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
"""
SQL = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
did=did, tid=tid, idx=idx, datlastsysoid=self.datlastsysoid
did=did, tid=tid, idx=idx,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
@@ -700,7 +695,8 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
# so that we create template for dropping index
SQL = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
did=did, tid=tid, idx=idx, datlastsysoid=self.datlastsysoid
did=did, tid=tid, idx=idx,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
@@ -757,7 +753,7 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
try:
SQL, name = index_utils.get_sql(
self.conn, data=data, did=did, tid=tid, idx=idx,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
if not isinstance(SQL, str):
return SQL
SQL = SQL.strip('\n').strip(' ')
@@ -808,7 +804,7 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
try:
sql, name = index_utils.get_sql(
self.conn, data=data, did=did, tid=tid, idx=idx,
datlastsysoid=self.datlastsysoid, mode='create')
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID, mode='create')
if not isinstance(sql, str):
return sql
sql = sql.strip('\n').strip(' ')
@@ -837,7 +833,7 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = index_utils.get_reverse_engineered_sql(
self.conn, schema=self.schema, table=self.table, did=did,
tid=tid, idx=idx, datlastsysoid=self.datlastsysoid,
tid=tid, idx=idx, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
add_not_exists_clause=True
)
@@ -868,7 +864,7 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
sql, name = index_utils.get_sql(
self.conn, data=data, did=did, tid=tid, idx=idx,
datlastsysoid=self.datlastsysoid, mode='create')
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID, mode='create')
sql = sql.strip('\n').strip(' ')
@@ -876,7 +872,7 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
sql = index_utils.get_reverse_engineered_sql(
self.conn, schema=target_schema,
table=self.table, did=did, tid=tid, idx=idx,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
template_path=None, with_header=False,
add_not_exists_clause=True
)
@@ -973,7 +969,7 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
did=did, tid=tid, idx=idx,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -263,7 +263,7 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.partition_template_path,
self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -372,7 +372,8 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.partition_template_path,
self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
ptid=ptid, datlastsysoid=self.datlastsysoid)
ptid=ptid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
@@ -408,7 +409,8 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.partition_template_path,
self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
ptid=ptid, datlastsysoid=self.datlastsysoid)
ptid=ptid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, result = self.conn.execute_dict(SQL)
if not status:
current_app.logger.error(result)
@@ -428,11 +430,11 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare):
return False
for row in partitions['rows']:
SQL = render_template("/".join([self.partition_template_path,
self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
ptid=row['oid'],
datlastsysoid=self.datlastsysoid)
SQL = render_template(
"/".join([self.partition_template_path,
self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid, ptid=row['oid'],
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, result = self.conn.execute_dict(SQL)
if not status:
@@ -712,7 +714,8 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.partition_template_path,
self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
ptid=ptid, datlastsysoid=self.datlastsysoid)
ptid=ptid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
return internal_server_error(errormsg=res)
@@ -750,7 +753,7 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare):
"/".join([self.partition_template_path,
self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid, ptid=ptid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -804,7 +807,7 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare):
SQL = render_template(
"/".join([self.partition_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid, ptid=ptid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -198,10 +198,6 @@ class RowSecurityView(PGChildNodeView):
schema, table = row_security_policies_utils.get_parent(self.conn,
kwargs[
'tid'])
self.datlastsysoid = self.manager.db_info[
kwargs['did']
]['datlastsysoid'] if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.schema = schema
self.table = table
# Set template path for the sql scripts
@@ -315,7 +311,7 @@ class RowSecurityView(PGChildNodeView):
sql = render_template("/".join(
[self.template_path, self._PROPERTIES_SQL]
), plid=plid, scid=scid, policy_table_id=tid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(sql)
if not status:
@@ -555,7 +551,8 @@ class RowSecurityView(PGChildNodeView):
SQL = row_security_policies_utils.get_reverse_engineered_sql(
self.conn, schema=self.schema, table=self.table, scid=scid,
plid=plid, policy_table_id=tid, datlastsysoid=self.datlastsysoid)
plid=plid, policy_table_id=tid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
return ajax_response(response=SQL)
@@ -632,7 +629,8 @@ class RowSecurityView(PGChildNodeView):
sql = row_security_policies_utils.get_reverse_engineered_sql(
self.conn, schema=schema, table=self.table, scid=scid,
plid=oid, policy_table_id=tid,
datlastsysoid=self.datlastsysoid, with_header=False)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
with_header=False)
drop_sql = ''
if drop_req:
@@ -197,10 +197,6 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare):
self.manager = get_driver(
PG_DEFAULT_DRIVER).connection_manager(kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = self.manager.db_info[
kwargs['did']
]['datlastsysoid'] if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
self.template_path = 'rules/sql'
self.table_template_path = compile_template_path(
'tables/sql',
@@ -310,7 +306,7 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare):
"""
SQL = render_template("/".join(
[self.template_path, self._PROPERTIES_SQL]
), rid=rid, datlastsysoid=self.datlastsysoid)
), rid=rid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1,5 +1,4 @@
/////////////////////////////////////////////////////////////
//234567890
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2022, The pgAdmin Development Team
@@ -11,6 +11,7 @@ import os
from regression.python_test_utils.template_helper import file_as_template
from regression.python_test_utils.sql_template_test_base import \
SQLTemplateTestBase
from pgadmin.utils.constants import DATABASE_LAST_SYSTEM_OID
class TestTablesPropertiesSql(SQLTemplateTestBase):
@@ -46,7 +47,7 @@ class TestTablesPropertiesSql(SQLTemplateTestBase):
public_schema_id = 2200
sql = template.render(scid=public_schema_id,
did=self.database_id,
datlastsysoid=self.last_system_oid,
datlastsysoid=DATABASE_LAST_SYSTEM_OID,
tid=self.table_id
)
return sql
@@ -54,12 +55,12 @@ class TestTablesPropertiesSql(SQLTemplateTestBase):
def test_setup(self, connection, cursor):
cursor.execute("""
SELECT
db.oid as did, datlastsysoid
db.oid as did
FROM
pg_catalog.pg_database db
WHERE db.datname = '{0}'""".format(self.database_name)
)
self.database_id, self.last_system_oid = cursor.fetchone()
self.database_id = cursor.fetchone()[0]
cursor.execute("SELECT oid FROM pg_catalog.pg_class where relname="
"'test_table'")
@@ -262,13 +262,6 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
# We need datlastsysoid to check if current trigger is system
# trigger
self.datlastsysoid = self.manager.db_info[
kwargs['did']
]['datlastsysoid'] if self.manager.db_info is not None and \
kwargs['did'] in self.manager.db_info else 0
# we will set template path for sql scripts
self.table_template_path = compile_template_path(
'tables/sql',
@@ -543,7 +536,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
@@ -668,10 +661,10 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
for trid in data['ids']:
# We will first fetch the trigger name for current request
# so that we create template for dropping trigger
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid)
SQL = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -730,7 +723,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL, name = trigger_utils.get_sql(
self.conn, data=data, tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects)
if not isinstance(SQL, str):
@@ -754,7 +747,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=new_trid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
@@ -812,7 +805,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
try:
sql, name = trigger_utils.get_sql(
self.conn, data=data, tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects)
if not isinstance(sql, str):
return sql
@@ -843,7 +836,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = trigger_utils.get_reverse_engineered_sql(
self.conn, schema=self.schema, table=self.table, tid=tid,
trid=trid, datlastsysoid=self.datlastsysoid,
trid=trid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects)
return ajax_response(response=SQL)
@@ -868,7 +861,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
if data:
SQL, name = trigger_utils.get_sql(
self.conn, data=data, tid=tid, trid=oid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects,
is_schema_diff=True)
@@ -887,7 +880,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = trigger_utils.get_reverse_engineered_sql(
self.conn, schema=schema, table=self.table, tid=tid,
trid=oid, datlastsysoid=self.datlastsysoid,
trid=oid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects,
template_path=None, with_header=False)
@@ -918,7 +911,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare):
SQL = render_template("/".join([self.template_path,
self._PROPERTIES_SQL]),
tid=tid, trid=trid,
datlastsysoid=self.datlastsysoid)
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -113,11 +113,6 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
self.conn = self.manager.connection(did=kwargs['did'])
self.qtIdent = driver.qtIdent
self.qtTypeIdent = driver.qtTypeIdent
# We need datlastsysoid to check if current table is system table
self.datlastsysoid = self.manager.db_info[
did
]['datlastsysoid'] if self.manager.db_info is not None and \
did in self.manager.db_info else 0
ver = self.manager.version
server_type = self.manager.server_type
@@ -577,7 +572,7 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
sql = render_template(
"/".join([self.table_template_path, self._PROPERTIES_SQL]),
did=did, scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(sql)
if not status:
@@ -748,7 +743,7 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
index_sql = index_utils.get_reverse_engineered_sql(
self.conn, schema=schema, table=table, did=did, tid=tid,
idx=row['oid'], datlastsysoid=self.datlastsysoid,
idx=row['oid'], datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
template_path=None, with_header=json_resp,
add_not_exists_clause=add_not_exists_clause
)
@@ -780,7 +775,7 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
get_reverse_engineered_sql(
self.conn, schema=schema, table=table, scid=scid,
plid=row['oid'], policy_table_id=tid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
template_path=None, with_header=json_resp)
policy_sql = "\n" + policy_sql
@@ -806,7 +801,7 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
for row in rset['rows']:
trigger_sql = trigger_utils.get_reverse_engineered_sql(
self.conn, schema=schema, table=table, tid=tid,
trid=row['oid'], datlastsysoid=self.datlastsysoid,
trid=row['oid'], datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects,
template_path=None, with_header=json_resp)
trigger_sql = "\n" + trigger_sql
@@ -837,7 +832,8 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
compound_trigger_sql = \
compound_trigger_utils.get_reverse_engineered_sql(
self.conn, schema=schema, table=table, tid=tid,
trid=row['oid'], datlastsysoid=self.datlastsysoid)
trid=row['oid'],
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
compound_trigger_sql = "\n" + compound_trigger_sql
# Add into main sql
@@ -864,7 +860,7 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
rules_sql = '\n'
sql = render_template("/".join(
[self.rules_template_path, self._PROPERTIES_SQL]
), rid=row['oid'], datlastsysoid=self.datlastsysoid)
), rid=row['oid'], datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(sql)
if not status:
@@ -4,7 +4,7 @@ SELECT
WHEN 'S' THEN 'defseqacl'
WHEN 'f' THEN 'deffuncacl'
WHEN 'T' THEN 'deftypeacl'
ELSE 'UNKNOWN - ' || a.deftype
ELSE 'UNKNOWN - ' || a.deftype::text
END AS deftype,
COALESCE(gt.rolname, 'PUBLIC') grantee, g.rolname grantor, pg_catalog.array_agg(a.privilege_type) as privileges, pg_catalog.array_agg(a.is_grantable) as grantable
FROM
@@ -3,7 +3,7 @@ SELECT
WHEN 'r' THEN 'deftblacl'
WHEN 'S' THEN 'defseqacl'
WHEN 'f' THEN 'deffuncacl'
ELSE 'UNKNOWN - ' || a.deftype
ELSE 'UNKNOWN - ' || a.deftype::text
END AS deftype,
COALESCE(gt.rolname, 'PUBLIC') grantee, g.rolname grantor, pg_catalog.array_agg(a.privilege_type) as privileges, pg_catalog.array_agg(a.is_grantable) as grantable
FROM
@@ -3,7 +3,7 @@ SELECT
WHEN 'r' THEN 'deftblacl'
WHEN 'S' THEN 'defseqacl'
WHEN 'f' THEN 'deffuncacl'
ELSE 'UNKNOWN - ' || a.deftype
ELSE 'UNKNOWN - ' || a.deftype::text
END AS deftype,
COALESCE(gt.rolname, 'PUBLIC') grantee, g.rolname grantor, pg_catalog.array_agg(a.privilege_type) as privileges, pg_catalog.array_agg(a.is_grantable) as grantable
FROM
@@ -4,7 +4,7 @@ SELECT
WHEN 'S' THEN 'defseqacl'
WHEN 'f' THEN 'deffuncacl'
WHEN 'T' THEN 'deftypeacl'
ELSE 'UNKNOWN - ' || a.deftype
ELSE 'UNKNOWN - ' || a.deftype::text
END AS deftype,
COALESCE(gt.rolname, 'PUBLIC') grantee,
g.rolname grantor,
@@ -235,15 +235,6 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
# We need datlastsysoid to check if current type is system type
self.datlastsysoid = 0
if (
self.manager.db_info is not None and
kwargs['did'] in self.manager.db_info
):
self.datlastsysoid = self.manager.db_info[kwargs['did']][
'datlastsysoid']
# Declare allows acl on type
self.acl = ['U']
@@ -278,7 +269,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
SQL = render_template(
"/".join([self.template_path, self._PROPERTIES_SQL]),
scid=scid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects)
status, res = self.conn.execute_dict(SQL)
@@ -604,7 +595,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
"/".join([self.template_path,
self._PROPERTIES_SQL]),
scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects
)
status, res = self.conn.execute_dict(SQL)
@@ -1157,7 +1148,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
"/".join([self.template_path,
self._PROPERTIES_SQL]),
scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects
)
status, res = self.conn.execute_dict(sql)
@@ -1363,7 +1354,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
"/".join([self.template_path,
self._PROPERTIES_SQL]),
scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects
)
status, res = self.conn.execute_dict(SQL)
@@ -1431,7 +1422,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
"/".join([self.template_path,
self._PROPERTIES_SQL]),
scid=scid, tid=tid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
show_system_objects=self.blueprint.show_system_objects
)
status, res = self.conn.execute_dict(SQL)
@@ -1551,7 +1542,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare):
res = dict()
SQL = render_template("/".join([self.template_path,
self._NODES_SQL]),
scid=scid, datlastsysoid=self.datlastsysoid,
scid=scid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
schema_diff=True)
status, rset = self.conn.execute_2darray(SQL)
if not status:
@@ -226,14 +226,6 @@ def check_precondition(f):
kwargs['sid']
)
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = 0
if (
self.manager.db_info is not None and
kwargs['did'] in self.manager.db_info
):
self.datlastsysoid = self.manager.db_info[kwargs['did']][
'datlastsysoid']
# Set template path for sql scripts
if self.manager.server_type == 'ppas':
_temp = self.ppas_template_path(self.manager.version)
@@ -401,7 +393,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
"""
SQL = render_template("/".join(
[self.template_path, self._SQL_PREFIX + self._NODES_SQL]),
vid=vid, datlastsysoid=self.datlastsysoid)
vid=vid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, rset = self.conn.execute_2darray(SQL)
if not status:
return internal_server_error(errormsg=rset)
@@ -474,7 +466,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
"""
SQL = render_template("/".join(
[self.template_path, self._SQL_PREFIX + self._PROPERTIES_SQL]
), vid=vid, datlastsysoid=self.datlastsysoid)
), vid=vid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
return False, internal_server_error(errormsg=res)
@@ -649,7 +641,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
self._SQL_PREFIX + self._PROPERTIES_SQL]),
did=did,
vid=vid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res_data = self.conn.execute_dict(SQL)
if not status:
@@ -774,7 +766,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
[self.template_path,
self._SQL_PREFIX + self._PROPERTIES_SQL]),
vid=vid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(sql)
if not status:
@@ -1371,7 +1363,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
SQL = render_template("/".join(
[self.template_path, self._SQL_PREFIX + self._PROPERTIES_SQL]),
vid=vid,
datlastsysoid=self.datlastsysoid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
)
status, res = self.conn.execute_dict(SQL)
@@ -1534,7 +1526,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
self.template_path, self._SQL_PREFIX + self._PROPERTIES_SQL
]),
scid=scid, vid=vid, did=did,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1548,7 +1540,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
self.column_template_path, self._PROPERTIES_SQL
]),
scid=scid, tid=vid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, data = self.conn.execute_dict(SQL)
if not status:
@@ -1593,7 +1585,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
self.template_path, self._SQL_PREFIX + self._PROPERTIES_SQL
]),
scid=scid, vid=vid, did=did,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, res = self.conn.execute_dict(SQL)
if not status:
@@ -1608,7 +1600,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
self.column_template_path, self._PROPERTIES_SQL
]),
scid=scid, tid=vid,
datlastsysoid=self.datlastsysoid
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, data = self.conn.execute_dict(SQL)
if not status:
@@ -1653,7 +1645,8 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare):
if not oid:
SQL = render_template("/".join(
[self.template_path, self._SQL_PREFIX + self._NODES_SQL]),
did=did, scid=scid, datlastsysoid=self.datlastsysoid,
did=did, scid=scid,
datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
schema_diff=True)
status, views = self.conn.execute_2darray(SQL)
if not status:
@@ -2063,7 +2056,7 @@ class MViewNode(ViewNode, VacuumSettings):
"""
SQL = render_template("/".join(
[self.template_path, self._SQL_PREFIX + self._PROPERTIES_SQL]
), did=did, vid=vid, datlastsysoid=self.datlastsysoid)
), did=did, vid=vid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID)
status, res = self.conn.execute_dict(SQL)
if not status:
return False, internal_server_error(errormsg=res)
@@ -2287,7 +2280,7 @@ class MViewNode(ViewNode, VacuumSettings):
res = dict()
SQL = render_template("/".join(
[self.template_path, self._SQL_PREFIX + self._NODES_SQL]),
did=did, scid=scid, datlastsysoid=self.datlastsysoid,
did=did, scid=scid, datlastsysoid=self._DATABASE_LAST_SYSTEM_OID,
schema_diff=True)
status, rset = self.conn.execute_2darray(SQL)
if not status:
@@ -12,6 +12,7 @@ import { getNodePrivilegeRoleSchema } from '../../../static/js/privilege.ui';
import { getNodeVariableSchema } from '../../../static/js/variable.ui';
import DatabaseSchema from './database.ui';
import Notify from '../../../../../../static/js/helpers/Notifier';
import { showServerPassword } from '../../../../../static/js/password_dialogs';
define('pgadmin.node.database', [
'sources/gettext', 'sources/url_for', 'jquery', 'underscore',
@@ -400,11 +401,11 @@ define('pgadmin.node.database', [
if (msg == 'CRYPTKEY_SET') {
connect_to_database(_model, _data, _tree, _item, _wasConnected);
} else {
Alertify.dlgServerPass(
showServerPassword(
gettext('Connect to database'),
msg, _model, _data, _tree, _item, _status,
onSuccess, onFailure, onCancel
).resizeTo();
);
}
}, 100);
});
@@ -231,10 +231,6 @@ class SubscriptionView(PGChildNodeView, SchemaDiffObjectCompare):
self.driver = get_driver(PG_DEFAULT_DRIVER)
self.manager = self.driver.connection_manager(kwargs['sid'])
self.conn = self.manager.connection(did=kwargs['did'])
self.datlastsysoid = self.manager.db_info[kwargs['did']][
'datlastsysoid'] if self.manager.db_info is not None \
and kwargs['did'] in self.manager.db_info else 0
# Set the template path for the SQL scripts
self.template_path = (
"subscriptions/sql/#{0}#".format(self.manager.version)
@@ -32,7 +32,7 @@ FROM pg_catalog.pg_database db
WHERE {% if did %}
db.oid = {{ did|qtLiteral }}::OID{% else %}{% if name %}
db.datname = {{ name|qtLiteral }}::text{% else %}
db.oid > {{ last_system_oid|qtLiteral }}::OID
db.oid > {{ last_system_oid|qtLiteral }}::OID OR db.datname IN ('postgres', 'edb')
{% endif %}{% endif %}
{% if db_restrictions %}
@@ -39,7 +39,7 @@ FROM pg_catalog.pg_database db
WHERE {% if did %}
db.oid = {{ did|qtLiteral }}::OID{% else %}{% if name %}
db.datname = {{ name|qtLiteral }}::text{% else %}
db.oid > {{ last_system_oid|qtLiteral }}::OID
db.oid > {{ last_system_oid|qtLiteral }}::OID OR db.datname IN ('postgres', 'edb')
{% endif %}{% endif %}
{% if db_restrictions %}
@@ -6,7 +6,7 @@ FROM
LEFT OUTER JOIN pg_catalog.pg_tablespace ta ON db.dattablespace = ta.oid
WHERE {% if did %}
db.oid = {{ did|qtLiteral }}::OID{% else %}
db.oid > {{ last_system_oid }}::OID
db.oid > {{ last_system_oid }}::OID OR db.datname IN ('postgres', 'edb')
{% endif %}
{% if db_restrictions %}
@@ -23,7 +23,7 @@ FROM pg_catalog.pg_database db
WHERE {% if did %}
db.oid = {{ did|qtLiteral }}::OID{% else %}{% if name %}
db.datname = {{ name|qtLiteral }}::text{% else %}
db.oid > {{ last_system_oid|qtLiteral }}::OID
db.oid > {{ last_system_oid|qtLiteral }}::OID OR db.datname IN ('postgres', 'edb')
{% endif %}{% endif %}
{% if db_restrictions %}
@@ -118,13 +118,11 @@ def get_attributes_from_db_info(manager, kwargs):
if 'did' in kwargs and kwargs['did'] in manager.db_info:
datlastsysoid = manager.db_info[kwargs['did']]['datlastsysoid'] \
if 'datlastsysoid' in manager.db_info[kwargs['did']] else 0
datistemplate = manager.db_info[kwargs['did']]['datistemplate'] \
if 'datistemplate' in manager.db_info[kwargs['did']] else False
datallowconn = manager.db_info[kwargs['did']]['datallowconn'] \
if 'datallowconn' in manager.db_info[kwargs['did']] else False
return datlastsysoid, datistemplate, datallowconn
return datistemplate, datallowconn
else:
return 0, False, True
return False, True
@@ -22,6 +22,7 @@ from pgadmin.utils.ajax import make_json_response, \
from pgadmin.utils.ajax import precondition_required
from pgadmin.utils.driver import get_driver
from config import PG_DEFAULT_DRIVER
from pgadmin.utils.constants import DATABASE_LAST_SYSTEM_OID
class ResourceGroupModule(CollectionNodeModule):
@@ -220,11 +221,6 @@ class ResourceGroupView(NodeView):
self.manager = self.driver.connection_manager(kwargs['sid'])
self.conn = self.manager.connection()
self.datlastsysoid = \
self.manager.db_info[self.manager.did]['datlastsysoid'] \
if self.manager.db_info is not None and \
self.manager.did in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -351,7 +347,8 @@ class ResourceGroupView(NodeView):
return gone(gettext("""Could not find the resource group."""))
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=res['rows'][0],
@@ -665,10 +665,6 @@ rolmembership:{
_("Connection to the server has been lost.")
)
self.datlastsysoid = \
self.manager.db_info[self.manager.did]['datlastsysoid'] \
if self.manager.db_info is not None and \
self.manager.did in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -843,7 +839,8 @@ rolmembership:{
return gone(self.not_found_error_msg())
res['rows'][0]['is_sys_obj'] = (
res['rows'][0]['oid'] <= self.datlastsysoid or self.datistemplate)
res['rows'][0]['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
return ajax_response(
response=res['rows'][0],
@@ -1129,7 +1126,7 @@ rolmembership:{
query = render_template(
"/".join([self.sql_path, 'dependents.sql']),
fetch_dependents=True, rid=rid,
lastsysoid=db_row['datlastsysoid']
lastsysoid=self._DATABASE_LAST_SYSTEM_OID
)
status, result = temp_conn.execute_dict(query)
@@ -1,10 +1,10 @@
{% if fetch_database %}
SELECT 'd' as type, datname,
datallowconn AND pg_catalog.has_database_privilege(datname, 'CONNECT') AS datallowconn,
datdba, datlastsysoid
datdba
FROM pg_catalog.pg_database db
UNION
SELECT 'M', spcname, null, null, null
SELECT 'M', spcname, null, null
FROM pg_catalog.pg_tablespace where spcowner= {{rid}}::oid
ORDER BY 1, 2
{% endif %}
@@ -1,10 +1,10 @@
{% if fetch_database %}
SELECT 'd' as type, datname,
datallowconn AND pg_catalog.has_database_privilege(datname, 'CONNECT') AS datallowconn,
datdba, datlastsysoid
datdba
FROM pg_catalog.pg_database db
UNION
SELECT 'M', spcname, null, null, null
SELECT 'M', spcname, null, null
FROM pg_catalog.pg_tablespace where spcowner={{rid}}::oid
ORDER BY 1, 2
{% endif %}
@@ -10,6 +10,7 @@
import { getNodeListById } from '../../../../static/js/node_ajax';
import ServerSchema from './server.ui';
import Notify from '../../../../../static/js/helpers/Notifier';
import { showServerPassword } from '../../../../static/js/password_dialogs';
define('pgadmin.node.server', [
'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone',
@@ -885,10 +886,11 @@ define('pgadmin.node.server', [
if (msg == 'CRYPTKEY_SET') {
connect_to_server(_node, _data, _tree, _item, _wasConnected);
} else if (msg != 'CRYPTKEY_NOT_SET') {
Alertify.dlgServerPass(
showServerPassword(
gettext('Connect to Server'),
msg, _node, _data, _tree, _item, _wasConnected
).resizeTo();
msg, _node, _data, _tree, _item, _wasConnected, onSuccess,
onFailure, onCancel
);
}
}, 100);
});
@@ -954,88 +956,6 @@ define('pgadmin.node.server', [
}
};
// Ask Password and send it back to the connect server
if (!Alertify.dlgServerPass) {
Alertify.dialog('dlgServerPass', function factory() {
return {
main: function(
title, message, node, _data, _tree, _item,
_status, _onSuccess, _onFailure, _onCancel
) {
this.set('title', title);
this.message = message;
this.tree = _tree;
this.nodeData = _data;
this.nodeItem = _item;
this.node= node;
this.connected = _status;
this.onSuccess = _onSuccess || onSuccess;
this.onFailure = _onFailure || onFailure;
this.onCancel = _onCancel || onCancel;
},
setup:function() {
return {
buttons:[{
text: gettext('Cancel'), className: 'btn btn-secondary fa fa-times pg-alertify-button',
key: 27,
},{
text: gettext('OK'), key: 13, className: 'btn btn-primary fa fa-check pg-alertify-button',
}],
focus: {element: '#password', select: true},
options: {
modal: 0, resizable: false, maximizable: false, pinnable: false,
},
};
},
build:function() {/*This is intentional (SonarQube)*/},
prepare:function() {
this.setContent(this.message);
},
callback: function(closeEvent) {
var _tree = this.tree,
_item = this.nodeItem,
_node = this.node,
_data = this.nodeData,
_status = this.connected,
_onSuccess = this.onSuccess,
_onFailure = this.onFailure,
_onCancel = this.onCancel;
if (closeEvent.button.text == gettext('OK')) {
var _url = _node.generate_url(_item, 'connect', _data, true);
if (!_status) {
_tree.setLeaf(_item);
_tree.removeIcon(_item);
_tree.addIcon(_item, {icon: 'icon-server-connecting'});
}
$.ajax({
type: 'POST',
timeout: 30000,
url: _url,
data: $('#frmPassword').serialize(),
})
.done(function(res) {
return _onSuccess(
res, _node, _data, _tree, _item, _status
);
})
.fail(function(xhr, status, error) {
return _onFailure(
xhr, status, error, _node, _data, _tree, _item, _status
);
});
} else {
_onCancel && typeof(_onCancel) == 'function' &&
_onCancel(_tree, _item, _data, _status);
}
},
};
});
}
var onCancel = function(_tree, _item, _data, _status) {
_data.is_connecting = false;
_tree.unload(_item);
@@ -106,10 +106,6 @@ class TablespaceView(PGChildNodeView):
kwargs['sid']
)
self.conn = self.manager.connection()
self.datlastsysoid = \
self.manager.db_info[self.manager.did]['datlastsysoid'] \
if self.manager.db_info is not None and \
self.manager.did in self.manager.db_info else 0
self.datistemplate = False
if (
self.manager.db_info is not None and
@@ -275,7 +271,8 @@ class TablespaceView(PGChildNodeView):
# Making copy of output for future use
copy_data = dict(res['rows'][0])
copy_data['is_sys_obj'] = (
copy_data['oid'] <= self.datlastsysoid or self.datistemplate)
copy_data['oid'] <= self._DATABASE_LAST_SYSTEM_OID or
self.datistemplate)
copy_data = self._formatter(copy_data, tsid)
return ajax_response(
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -74,7 +74,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, pg_catalog.pg_get_expr(ad.adbin, ad.adrelid) as adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -74,7 +74,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, pg_catalog.pg_get_expr(ad.adbin, ad.adrelid) as adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, pg_get_expr(ad.a
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -70,7 +70,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -72,7 +72,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -74,7 +74,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN 'n'::text
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -78,7 +78,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_synonym', 'pg_policy'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, pg_catalog.pg_get_expr(ad.adbin, ad.adrelid) as adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN CASE WHEN tg.tgpackageoid != 0 THEN 'Tc'::text ELSE 'Tr'::text END
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 AND ns.nspcompoundtrigger = false THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -78,7 +78,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_synonym', 'pg_policy'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, pg_catalog.pg_get_expr(ad.adbin, ad.adrelid) as adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN CASE WHEN tg.tgpackageoid != 0 THEN 'Tc'::text ELSE 'Tr'::text END
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 AND ns.nspcompoundtrigger = false THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, pg_get_expr(ad.a
WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -74,7 +74,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_synonym'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -76,7 +76,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_synonym'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -78,7 +78,7 @@ refclassid IN ( SELECT oid FROM pg_catalog.pg_class WHERE relname IN
'pg_synonym', 'pg_policy'))
UNION
SELECT DISTINCT dep.deptype, dep.refclassid, dep.refobjid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind::text END
ELSE '' END AS type,
NULL AS ownertable,
CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '')
@@ -1,5 +1,5 @@
SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END
CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind::text || COALESCE(dep.objsubid::text, '') ELSE cl.relkind::text END
WHEN tg.oid IS NOT NULL THEN 'Tr'::text
WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END
WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END
@@ -7,7 +7,7 @@ SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
WHEN pr.oid IS NOT NULL THEN 'Pf'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'Rl'::text
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END
WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype::text END
WHEN ad.oid IS NOT NULL THEN 'A'::text
WHEN fs.oid IS NOT NULL THEN 'Fs'::text
WHEN fdw.oid IS NOT NULL THEN 'Fw'::text
@@ -1,4 +1,4 @@
import React, { useState } from 'react';
import React, { useState, useRef, useEffect } from 'react';
import gettext from 'sources/gettext';
import { Box } from '@material-ui/core';
import { DefaultButton, PrimaryButton } from '../../../static/js/components/Buttons';
@@ -8,8 +8,11 @@ import PropTypes from 'prop-types';
import { useModalStyles } from '../../../static/js/helpers/ModalProvider';
import { FormFooterMessage, InputCheckbox, InputText, MESSAGE_TYPE } from '../../../static/js/components/FormComponents';
export default function ConnectServerContent({closeModal, data, onOK}) {
export default function ConnectServerContent({closeModal, data, onOK, setHeight}) {
const classes = useModalStyles();
const containerRef = useRef();
const firstEleRef = useRef();
const okBtnRef = useRef();
const [formData, setFormData] = useState({
tunnel_password: '',
save_tunnel_password: false,
@@ -25,12 +28,29 @@ export default function ConnectServerContent({closeModal, data, onOK}) {
setFormData((prev)=>({...prev, [id]: val}));
};
const onKeyDown = (e) => {
// If enter key is pressed then click on OK button
if (e.key === 'Enter') {
okBtnRef.current?.click();
}
};
useEffect(()=>{
setTimeout(()=>{
firstEleRef.current && firstEleRef.current.focus();
}, 275);
}, []);
useEffect(()=>{
setHeight?.(containerRef.current?.offsetHeight);
}, [containerRef.current]);
if(!data) {
return <>No data</>;
}
return (
<Box display="flex" flexDirection="column" height="100%">
<Box display="flex" flexDirection="column" className={classes.container} ref={containerRef}>
<Box flexGrow="1" p={2}>
{data.prompt_tunnel_password && <>
<Box>
@@ -42,10 +62,10 @@ export default function ConnectServerContent({closeModal, data, onOK}) {
</span>
</Box>
<Box marginTop='12px'>
<InputText type="password" value={formData['tunnel_password']} maxLength={null}
onChange={(e)=>onTextChange(e, 'tunnel_password')} autoFocus />
<InputText inputRef={firstEleRef} type="password" value={formData['tunnel_password']} maxLength={null}
onChange={(e)=>onTextChange(e, 'tunnel_password')} onKeyDown={(e)=>onKeyDown(e)} />
</Box>
<Box marginTop='12px'>
<Box marginTop='12px' marginBottom='12px'>
<InputCheckbox controlProps={{label: gettext('Save Password')}} value={formData['save_tunnel_password']}
onChange={(e)=>onTextChange(e.target.checked, 'save_tunnel_password')} disabled={!data.allow_save_tunnel_password} />
</Box>
@@ -60,8 +80,13 @@ export default function ConnectServerContent({closeModal, data, onOK}) {
</span>
</Box>
<Box marginTop='12px'>
<InputText type="password" value={formData['password']} maxLength={null}
onChange={(e)=>onTextChange(e, 'password')} autoFocus />
<InputText inputRef={(ele)=>{
if(!data.prompt_tunnel_password) {
/* Set only if no tunnel password asked */
firstEleRef.current = ele;
}
}} type="password" value={formData['password']} maxLength={null}
onChange={(e)=>onTextChange(e, 'password')} onKeyDown={(e)=>onKeyDown(e)}/>
</Box>
<Box marginTop='12px'>
<InputCheckbox controlProps={{label: gettext('Save Password')}} value={formData['save_password']}
@@ -76,7 +101,7 @@ export default function ConnectServerContent({closeModal, data, onOK}) {
<DefaultButton data-test="close" startIcon={<CloseIcon />} onClick={()=>{
closeModal();
}} >{gettext('Cancel')}</DefaultButton>
<PrimaryButton data-test="save" className={classes.margin} startIcon={<CheckRoundedIcon />} onClick={()=>{
<PrimaryButton ref={okBtnRef} data-test="save" className={classes.margin} startIcon={<CheckRoundedIcon />} onClick={()=>{
let postFormData = new FormData();
if(data.prompt_tunnel_password) {
postFormData.append('tunnel_password', formData.tunnel_password);
@@ -99,5 +124,6 @@ export default function ConnectServerContent({closeModal, data, onOK}) {
ConnectServerContent.propTypes = {
closeModal: PropTypes.func,
data: PropTypes.object,
onOK: PropTypes.func
onOK: PropTypes.func,
setHeight: PropTypes.func
};
+7 -6
View File
@@ -498,9 +498,10 @@ define('pgadmin.browser.node', [
return null;
},
addUtilityPanel: function(width, height) {
addUtilityPanel: function(width, height, docker) {
var body = window.document.body,
el = document.createElement('div');
el = document.createElement('div'),
dockerObject = docker || pgBrowser.docker;
body.insertBefore(el, body.firstChild);
@@ -513,7 +514,7 @@ define('pgadmin.browser.node', [
new_height = height;
}
var new_panel = pgBrowser.docker.addPanel(
var new_panel = dockerObject.addPanel(
'utility_props', window.wcDocker.DOCK.FLOAT, undefined, {
w: new_width,
h: new_height,
@@ -548,8 +549,8 @@ define('pgadmin.browser.node', [
}
},
registerUtilityPanel: function() {
var w = pgBrowser.docker,
registerUtilityPanel: function(docker) {
var w = docker || pgBrowser.docker,
p = w.findPanels('utility_props');
if (p && p.length == 1)
@@ -572,7 +573,7 @@ define('pgadmin.browser.node', [
},
events: events,
});
p.load(pgBrowser.docker);
p.load(w);
},
register_node_panel: function() {
var w = pgBrowser.docker,
@@ -0,0 +1,132 @@
/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2022, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import React from 'react';
import ReactDOM from 'react-dom';
import pgAdmin from 'sources/pgadmin';
import ConnectServerContent from './ConnectServerContent';
import Theme from 'sources/Theme';
import url_for from 'sources/url_for';
import getApiInstance from '../../../static/js/api_instance';
function setNewSize(panel, width, height) {
// Add height of the header
let newHeight = height + 31;
// Set min and max size of the panel
panel.minSize(width, newHeight);
panel.maxSize(width, newHeight);
panel.maximisable(false);
/* No other way to update size, below is the only way */
panel._parent._size.x = width;
panel._parent._size.y = newHeight;
panel._parent.__update();
}
// This functions is used to show the connect server password dialog.
export function showServerPassword() {
var pgBrowser = pgAdmin.Browser,
title = arguments[0],
formJson = arguments[1],
nodeObj = arguments[2],
nodeData = arguments[3],
treeNodeInfo = arguments[4],
itemNodeData = arguments[5],
status = arguments[6],
onSuccess = arguments[7],
onFailure = arguments[8];
// Register dialog panel
pgBrowser.Node.registerUtilityPanel();
var panel = pgBrowser.Node.addUtilityPanel(pgBrowser.stdW.md),
j = panel.$container.find('.obj_properties').first();
panel.title(title);
ReactDOM.render(
<Theme>
<ConnectServerContent
setHeight={(containerHeight)=>{
setNewSize(panel, pgBrowser.stdW.md, containerHeight);
}}
closeModal={()=>{
panel.close();
}}
data={formJson}
onOK={(formData)=>{
const api = getApiInstance();
var _url = nodeObj.generate_url(itemNodeData, 'connect', nodeData, true);
if (!status) {
treeNodeInfo.setLeaf(itemNodeData);
treeNodeInfo.removeIcon(itemNodeData);
treeNodeInfo.addIcon(itemNodeData, {icon: 'icon-server-connecting'});
}
api.post(_url, formData)
.then(res=>{
panel.close();
return onSuccess(
res.data, nodeObj, nodeData, treeNodeInfo, itemNodeData, status
);
})
.catch((err)=>{
return onFailure(
err.response.request, status, err, nodeObj, nodeData, treeNodeInfo,
itemNodeData, status
);
});
}}
/>
</Theme>, j[0]);
}
// This functions is used to show the connect server password dialog when
// launch from Schema Diff tool.
export function showSchemaDiffServerPassword() {
var pgBrowser = pgAdmin.Browser,
docker = arguments[0],
title = arguments[1],
formJson = arguments[2],
serverID = arguments[3],
successCallback = arguments[4],
onSuccess = arguments[5],
onFailure = arguments[6];
// Register dialog panel
pgBrowser.Node.registerUtilityPanel(docker);
var panel = pgBrowser.Node.addUtilityPanel(pgBrowser.stdW.md, undefined, docker),
j = panel.$container.find('.obj_properties').first();
panel.title(title);
ReactDOM.render(
<Theme>
<ConnectServerContent
setHeight={(containerHeight)=>{
setNewSize(panel, pgBrowser.stdW.md, containerHeight);
}}
closeModal={()=>{
panel.close();
}}
data={formJson}
onOK={(formData)=>{
const api = getApiInstance();
var _url = url_for('schema_diff.connect_server', {'sid': serverID});
api.post(_url, formData)
.then(res=>{
panel.close();
return onSuccess(res.data, successCallback);
})
.catch((err)=>{
return onFailure(
err.response.request, status, err, serverID, successCallback
);
});
}}
/>
</Theme>, j[0]);
}
+2
View File
@@ -21,6 +21,7 @@ from pgadmin.utils.ajax import make_json_response, precondition_required,\
internal_server_error
from pgadmin.utils.exception import ConnectionLost, SSHTunnelConnectionLost,\
CryptKeyMissing
from pgadmin.utils.constants import DATABASE_LAST_SYSTEM_OID
def underscore_escape(text):
@@ -391,6 +392,7 @@ class PGChildNodeView(NodeView):
_GET_SUBTYPES_SQL = 'get_subtypes.sql'
_GET_EXTERNAL_FUNCTIONS_SQL = 'get_external_functions.sql'
_GET_TABLE_FOR_PUBLICATION = 'get_tables.sql'
_DATABASE_LAST_SYSTEM_OID = DATABASE_LAST_SYSTEM_OID
def get_children_nodes(self, manager, **kwargs):
"""
Loaded 100 of 177 files, more files were not shown because too many files have changed in this diff. Show more