Compare commits

...
1802 Commits
Author SHA1 Message Date
Akshay Joshi 490999f528 Updated release notes 2019-04-08 18:33:20 +05:30
Akshay Joshi ceb0e39e14 Update version for release 2019-04-08 18:31:51 +05:30
Akshay Joshi 3bed332439 Update message catalogs. 2019-04-08 18:24:36 +05:30
Khushboo Vashi c21ea3c342 Ensure that pgAdmin4 should work properly with psycopg2 v2.8. Fixes #4143 2019-04-08 17:49:50 +05:30
Murtuza Zabuawala 84ecffa4d9 Added recommended ESLinter checks. Fixes #4142 2019-04-05 13:07:43 +05:30
Akshay Joshi 9bff6c7157 Fixed pep8 issue 2019-04-05 12:53:50 +05:30
Usman Muzaffar 5c4c09f237 Fixed feature test issues 2019-04-05 12:25:03 +05:30
Dave Page f706f7ed0c Relabel the Save button on the datagrid text editor to avoid confusion with the actual Save button that updates the database. Fixes #4131 2019-04-02 17:20:43 +01:00
Identifier Anonymous fb12b2e2fc Updated Japanese tanslation. 2019-04-02 14:41:05 +01:00
Fred Escallier badbbade08 Updated French tanslation. 2019-04-02 14:38:47 +01:00
Dave Page 614c66940a Add missing files. 2019-04-01 11:04:44 +01:00
Akshay Joshi 7f23f729c6 Update version for release. 2019-04-01 15:19:25 +05:30
Akshay Joshi a019e2de6f Update message catalogs. 2019-04-01 15:14:53 +05:30
Akshay Joshi d286bada5c Fix custom autovacuum configuration for Materialized Views. Fixes #4110 2019-04-01 09:47:17 +01:00
Akshay Joshi fe6e5e3c45 Correct the feature number in the release note. 2019-04-01 12:18:45 +05:30
Akshay Joshi 61ff588c09 Fixed issue while fetching the view id for view/materialized view. Added schema name in where clause. 2019-03-30 13:20:31 +05:30
Usman Muzaffar a2aabf6270 Remove unnecessary print statement in the regression tests. 2019-03-29 14:47:22 +00:00
Aditya Toshniwal 55c6f5205d Add some SQL updates to handle inherited column markers/comments that were missed in the previous commit. 2019-03-29 14:44:21 +00:00
Khushboo Vashi 5965bc9107 Remove a debug statement. 2019-03-29 14:40:36 +00:00
Dave Page be313bb17b Missed a bug :-( 2019-03-29 14:35:43 +00:00
Aditya Toshniwal 7627e9c699 Display errors during CSV download from the Query Tool in the UI rather than putting them in the CSV file. Fixes #4085
Ensure the toolbar buttons are properly reset following a CSV download in the Query Tool. Fixes #4096
2019-03-29 14:31:33 +00:00
Dave Page 4d45a3cb24 PEP-8 fixes. 2019-03-28 14:20:52 -04:00
Khushboo Vashi 97919d091a Add support for IDENTITY columns. Fixes #4030 2019-03-28 13:13:43 -04:00
Aditya Toshniwal 8aaacdf96e Include inherited column comments and defaults in reverse engineered table SQL. Fixes #2627
Include comment SQL for inherited columns in reverse engineered table SQL. Fixes #4037
Include inherited columns in SELECT scripts. Fixes #4058
2019-03-28 08:36:41 -04:00
Aditya Toshniwal fbc6aea497 Fix an issue where JSON data would not be rendered in the Query Tool. Fixes #4105 2019-03-28 08:12:09 -04:00
Aditya Toshniwal 6fb35f2649 Overhaul the layout saving code so it includes the Query Tool and Debugger, and stores the layout when change events are detected rather than (unreliably) on exit. Fixes #4084 2019-03-26 11:08:45 -04:00
Dave Page b917246be9 Add missing closing brace. 2019-03-26 10:25:50 -04:00
Akshay Joshi 9c2ea3ca11 1) Ensure View/Materialized View node should be visible after updating any property. Fixes #4109
2) Updated the icon for Materialized View.
2019-03-26 14:12:47 +05:30
Dave Page a5ebdafb82 Enlarge the grab handles for resizing dialogs etc. Fixes #4063 2019-03-25 07:50:55 -04:00
Dave Page c43aa9b576 Clarify Windows build requirements. 2019-03-25 07:47:47 -04:00
Akshay Joshi a0010aac31 1) Ensure that sequence should be created with Privileges.
2) Updated the validation for blank values in Definition tab.
2019-03-25 14:29:43 +05:30
Akshay Joshi c4ea1a56bc Fixed typo in logging.raiseException, it is 'raiseExceptions'. Fixes #3933 2019-03-25 11:36:18 +05:30
Akshay Joshi 212ca01506 Ensure sequences can be created with increment, start, minimum and maximum options set. Fixes #4100 2019-03-22 15:54:34 +00:00
Dave Page ce073a2856 Fix SQL help for EPAS 10+, and refactor the URL generation code into a testable function. Fixes #4099 2019-03-22 14:09:24 +00:00
Dave Page ae23f146d1 Use the user's full email address (not just the username part) as the basis for the storage directory name.. Fixes #3887 2019-03-22 09:36:13 +00:00
Dave Page 096220ece9 Fix the PEP8 yarn runner 2019-03-22 09:04:19 +00:00
Dave Page 83bb07e01d Improve the German translation for Backup Server, per H Re. Fixes #4090 2019-03-21 16:18:09 +00:00
Dave Page 89784413dd Fix indent. 2019-03-21 14:05:40 +00:00
Dave Page 17464aa034 Don't use old-style variable notation. 2019-03-21 14:02:19 +00:00
Dave Page b2b5629a01 Fix PEP-8 issues. 2019-03-21 12:58:52 +00:00
Usman Muzaffar 33693734fc Add new file missed in last commit. 2019-03-21 12:58:38 +00:00
Usman Muzaffar be26fc540c Many fixes to the stability of the feature tests, including:
tree toggle issue
Query tool inteliSence issue eg. when there is only one option and drop down is not shown
Backup and restore windows locator changes
Fixes required due to resolving rm # 4041
Dependent tab not showing data sometime, so refreshed the page and handled it
Due to change of logic for auto commit, did the required changes
Due to fix of RM 4062, did the required workaround which broke the test case.
2019-03-21 12:04:37 +00:00
Dave Page 3f22503ad2 Tidy up table formatting in the docs. Thanks to Susan Douglas for the tips! 2019-03-21 11:38:34 +00:00
Aditya Toshniwal 61f11aa4fc Update wcDocker to fix the issue where the Scratch Pad grows in size if the results panel is resized. Fixes #3968 2019-03-21 09:15:28 +00:00
Akshay Joshi 48c5c39c5d Ensure that parser should be set in FTS Configuration. 2019-03-20 20:21:58 +05:30
Aditya Toshniwal 8e9a77b3e3 Add a small utility for extracting PostgreSQL SQL and pl/pgsql keywords from the interwebs. 2019-03-20 13:53:37 +00:00
Khushboo Vashi b529c28b43 Fix an issue with Python 2.7 where regression test output is printed twice by the logger. 2019-03-20 13:37:19 +00:00
Akshay Joshi 5dd1472d6b 1) Fixed issue in Select2 Control, added undefined/null check.
2) Fixed the width of the delete cell.
2019-03-20 18:54:49 +05:30
Dave Page 906a4a845e Update pycodestyle to 2.5.0. Allow newer versions so we can catch issues early. 2019-03-20 13:01:32 +00:00
Dave Page 48c3763e95 Remove the dependency on importlib for Python <= 2.7. It's not actually required. 2019-03-20 11:58:09 +00:00
Dave Page e1ae502725 Delete the ci scripts that have be unmaintained and unused for some time now. 2019-03-20 11:27:28 +00:00
Dave Page bb1e908b54 Apply codestyle checks to all Python code. 2019-03-20 11:17:51 +00:00
Dave Page 6a8367beb9 We need to prefix the exclude directories as the pycodestyle file is now in a different location. 2019-03-20 09:33:51 +00:00
Dave Page 9273da2dc6 Fix PEP-8 issue and move the pycodestyle config into a central location. 2019-03-20 08:57:43 +00:00
Aditya Toshniwal a4bc26c810 Fix handling of numeric arrays in View/Edit Data. Fixes #4062 2019-03-19 16:45:00 +00:00
Aditya Toshniwal 3db3740cf2 Fix handling of numeric arrays in View/Edit Data. Fixes #4062 2019-03-19 16:29:05 +00:00
Khushboo Vashi 546161ab1a Fix an issue with stdout redirection on Windows, and remove code added in a failed attempt to resolve a Windows regression test issue. 2019-03-19 15:55:34 +00:00
Dave Page 4dcd3e31d8 Fix PEP-8 issue 2019-03-18 11:11:48 +00:00
Khushboo Vashi 1e26b96b12 Another attempt to satisfy Jenkins. 2019-03-18 10:33:20 +00:00
Khushboo Vashi 31e17f025b Attempt to fix the Windows regression test weirdness. 2019-03-18 09:30:08 +00:00
Dave Page 8c5894dd6a Revert "Remove the cp1252 test to see if it un-breaks the Windows buildfarm runs."
This reverts commit ce51204
2019-03-18 09:28:28 +00:00
Dave Page 04c776cbeb Randomise the database name used for encoding tests to avoid collisions when multiple tests are running against the same server. 2019-03-15 12:03:42 +00:00
Dave Page ce5120431b Remove the cp1252 test to see if it un-breaks the Windows buildfarm runs. 2019-03-15 11:01:53 +00:00
Dave Page 7a271a34c6 Make the WHEN field a CodeMirror control on the Event Trigger dialogue. Fixes #4050 2019-03-15 10:35:47 +00:00
Dave Page 2e3475e06a Fix the RE-SQL syntax for roles with a VALID UNTIL clause. Fixes #4081 2019-03-15 10:03:11 +00:00
Dave Page 4edd100ff9 Fix the clean target so that it doesn't error out if there's no runtime Makefile in the tree. 2019-03-15 09:33:42 +00:00
Dave Page b3c3b69a36 Bail out if yarn returns a non-zero code. 2019-03-15 09:20:13 +00:00
Dave Page 670a62208a Fix node paths that I broke yesterday. 2019-03-15 09:09:24 +00:00
Dave Page 69ec460b60 Fix naming inconsistency for the column and FTS parser modules. Fixes #1269 2019-03-14 16:52:42 +00:00
Dave Page 395d3cb545 Improve a couple of German translations. Fixes #3104 2019-03-14 16:36:02 +00:00
Dave Page c548eac5ef Append the file suffix to filenames when needed in the File Create dialogue. Fixes #4069 2019-03-14 15:48:21 +00:00
Dave Page 145ca618ae Remove the direct dependency on fsevents as we don't use it ourselves and it errors on Linux and Windows. 2019-03-14 15:28:46 +00:00
Khushboo Vashi e4417229aa Update all Python and JS dependencies. Fixes #4019 2019-03-14 15:11:16 +00:00
Dave Page c7b29d35ae Add an ePub doc build target (update to release notes). Fixes #4075 2019-03-13 16:23:27 +00:00
Dave Page a9dad423f6 Fix the online help button on the resource group dialogue. Fixes #4052 2019-03-13 16:21:10 +00:00
Dave Page cdc9ed678f Enable the online help button on the index dialogue. Fixes #4053 2019-03-13 16:18:51 +00:00
Dave Page 870d373ced Change the CodeMirror active line background colour to $color-danger-lighter so it doesn't conflict with the selection colour. Fixes #4073 2019-03-13 16:04:26 +00:00
Dave Page ab9a3a57ad Make the Query Tool history persistent across sessions. Fixes #4017 2019-03-13 13:37:34 +00:00
Dave Page a502019e20 Add a target for building the docs as an epub. 2019-03-12 14:33:46 +00:00
Dave Page 25b8a909b1 Update links in docs to https where possible, and fix a couple of broken/out of date ones. 2019-03-12 14:24:46 +00:00
Dave Page 2356988bdf Ensure that Firefox prompts for a filename/location when downloading query results as a CSV file. Fixes #4071 2019-03-12 12:45:25 +00:00
Khushboo Vashi eb1db50f85 Avoid 'bogus varno' message from Postgres when viewing the SQL for a table with triggers. Fixes #3995 2019-03-12 10:13:31 +00:00
Dave Page 8f1f04e5f3 Major doc cleanup:
- Reformat source so it's wrapped.
- Standardise markup.
- Center images.
- Restructure in various places to improve the indexing.
- Remove duplicated Query Tool toolbar descriptions.
- Ensure the structure works in both HTML and LaTeX.
2019-03-08 15:29:05 +00:00
Dave Page f4ca208474 Fix the latexpdf doc build. Fixes #4060
Thanks to Jean-François for the assist:
    https://groups.google.com/forum/#!topic/sphinx-users/ZlQ95_QikXo
2019-03-08 09:45:04 +00:00
Aditya Toshniwal 6aae9d6e20 Handle resultsets with zero columns correctly in the Query Tool. Fixes #4054 2019-03-07 15:22:45 +00:00
Dave Page f8b9a86e95 Include the license in the docs, and ensure it gets updated each year. 2019-03-07 15:12:12 +00:00
Dave Page 47bce4eb23 Some more doc restructuring and cleanup. 2019-03-07 14:29:51 +00:00
Dave Page 64ee23a088 Some doc restructuring and cleanup. 2019-03-07 14:26:56 +00:00
Aditya Toshniwal 4b895941b3 Remove the large and unnecessary dependency on React and 87 other related libraries. Fixes #4018 2019-03-07 10:51:59 +00:00
Dave Page d7bf6ec69f String review and subsequent cleanup
Ashesh Vashi
Abhilasha Narendra
Karen Blatchley
Susan Douglas
Dave Page
2019-03-05 14:08:16 +00:00
Fred Escallier 48c9864184 French translation update. 2019-03-05 09:55:33 +00:00
Identifier Anonymous 64a9e8cb83 Japanese translation update. 2019-03-05 09:52:58 +00:00
Dave Page f401def044 Add support for reverse proxied setups with Gunicorn, and document Gunicorn, uWSGI & NGINX configurations. Fixes #2001 2019-03-04 16:29:41 +00:00
Akshay Joshi 28555b387f Update version for release 2019-03-04 17:35:55 +05:30
Akshay Joshi 9ad8756ec2 Update message catalogs. 2019-03-04 17:30:42 +05:30
Khushboo Vashi 98815af8b6 Fix the position of text editor of a cell in Query Tool. 2019-03-04 16:39:30 +05:30
Akshay Joshi 0aeb20ee64 Prevent auto-commit/rollback being changed mid-transaction, and make the Preferences the defaults, not the current values. 2019-03-04 10:44:31 +00:00
Khushboo Vashi efeb9d6d20 Fix regression issue caused due to encoding fixes. 2019-03-04 16:11:20 +05:30
Abhilasha Narendra 9d96d6123e Update documentation screenshots as per new design. Fixes #3890 2019-03-04 13:06:04 +05:30
Murtuza Zabuawala 36ffdb93e8 Custom-encode forward slashes in URL parameters as Apache HTTPD doesn't allow them in some cases. Fixes #3998 2019-03-01 14:55:25 +00:00
Dave Page ecbba79c2a Fix PEP-8 issue. 2019-03-01 14:19:08 +00:00
Dave Page 13f52ad9ac Update release notes. 2019-03-01 13:54:11 +00:00
Khushboo Vashi 849e34c2f7 Add full support and testsfor all PG server side encodings. Fixes #3992. Fixes #3982. Fixes #3911 2019-03-01 13:51:50 +00:00
Murtuza Zabuawala fb747b8031 Fix download CSV for IE11 which doesn't support the download attribute. Fixes #4040 2019-03-01 13:32:40 +00:00
Khushboo Vashi c6d295727c Fix resizing of the results grid, when full of data. 2019-03-01 12:49:41 +00:00
Aditya Toshniwal 74cfeabd02 Fix graphical explain now that JSON data is sent as text to stop JS futzing with it. Fixes #4041 2019-03-01 12:38:57 +00:00
Dave Page d8f9e3e87b Optimise the Docker file to minimise the number of layers and maximise the chances that changes will be in the last layers built. 2019-03-01 12:29:05 +00:00
Dave Page f552519ed6 Set the Gunicorn worker timeout to match the configured session expiry. Partially fixes #3656 2019-03-01 11:55:17 +00:00
Akshay Joshi bbeb395beb Ignore exceptions in the logger. Fixes #3933 2019-02-28 13:22:12 +00:00
Dave Page acb61f0990 Use POST instead of GET for Query Tool downloads to avoid errors with long queries. Fixes #4013 2019-02-27 17:08:53 +00:00
Aditya Toshniwal e6e7cf0f69 Fix support for bigint's in JSONB data. Fixes #3587 2019-02-27 13:39:47 +00:00
Khushboo Vashi 6b3a628e7a Fix double scrollbar on the query tool results grid. 2019-02-27 10:59:58 +00:00
Aditya Toshniwal 9c5b9364b6 Support double-click on Query Tool result grid column resize handles to auto-size to the content. Fixes #4034 2019-02-26 13:44:16 +00:00
Dave Page 1770c94b07 Fix the text highlight colour. 2019-02-25 17:08:05 +00:00
Dave Page 0694f59e70 Fix formatting 2019-02-25 12:51:50 +00:00
Aditya Toshniwal 98bfbcff8f Fix dashboard test cases. 2019-02-25 12:27:15 +00:00
Dave Page 42aa4dcd22 Clarify pgAgent installation options. 2019-02-25 12:10:53 +00:00
Aditya Toshniwal 59446bb4b5 Ensure JSON data isn't modified in-flight by psycopg2 when using View/Edit data. Fixes #3600 2019-02-25 10:34:36 +00:00
Akshay Joshi a5d39003b6 Handle display of roles with expiration set to infinity correctly. Fixes #3352 2019-02-25 10:24:11 +00:00
Dave Page c45675e019 Ensure long queries don't cause errors when downloading CSV in the Query Tool. Fixes #4013
This was actually fixed by #3673 it would appear.
2019-02-22 16:29:45 +00:00
Dave Page 27d3990ba2 Allow editing of values in columns with the oid datatype which are not an actual row OID. Fixes #3418 2019-02-22 16:18:39 +00:00
Dave Page d326ddd21a Update release notes as the fix for #3583 appears to have resolved other issues. Fixes #4000 2019-02-22 15:44:14 +00:00
Dave Page 3ad606733a Update doc colours to more closely match the new UI. 2019-02-22 15:22:50 +00:00
Akshay Joshi 38b034ec3c Add Commit and Rollback buttons to the Query Tool. Fixes #2418 2019-02-22 14:28:05 +00:00
Dave Page 0766b17726 Enable/disable the Download button with the Execute button. 2019-02-22 09:34:48 +00:00
Dave Page 73b144c45c Fix an issue where importing servers fails if a group already exists for a different user. Fixes #4022 2019-02-21 15:40:37 +00:00
Khushboo Vashi 98283c1213 Disable the editor and execute functions whilst queries are executing. Fixes #4021 2019-02-21 14:19:25 +00:00
Akshay Joshi 5be0d17df5 Don't exclude SELECT statements from transaction management in the Query Tool in case they call data-modifying functions. Fixes #3958 2019-02-21 14:05:10 +00:00
Dave Page bacb57086c Update CodeMirror to 5.43.0 to resolve issues with auto-indent. Fixes #3583 2019-02-21 10:57:44 +00:00
Dave Page e5598038fa Ensure size stats are prettified on the statistics tab when the UI language != English. Fixes #3096 2019-02-20 16:39:38 +00:00
Dave Page a39f43788b Include multiple versions of the PG utilties in containers. Fixes #3886 2019-02-20 15:17:16 +00:00
Dave Page aae49b5324 Update Docker README to match reality. 2019-02-20 14:51:36 +00:00
Khushboo Vashi 34045efb38 Modify the Download as CSV option to use the same connection as the Query Tool its running in so temporary tables etc. can be used. Fixes #3673 2019-02-20 11:49:45 +00:00
Aditya Toshniwal 292ac32db5 Fix editing of table data with a JSON primary key. Fixes #3912 2019-02-20 11:15:39 +00:00
Neel Patel ccb0796317 Convert the JSON output from yarn properly 2019-02-19 13:18:37 +00:00
Dave Page 841af6868d Fix paste issue during commit :-s 2019-02-18 17:08:18 +00:00
Murtuza Zabuawala e2482d2294 Set the background colour for backform notes, and add an icon. Fixes #3948 2019-02-18 16:59:39 +00:00
Khushboo Vashi 554455fa75 Fix treeview state saving after reset. 2019-02-18 13:15:22 +00:00
Dave Page 255afe673a Add a "scratch pad" to the Query Tool to hold text snippets whilst editing. Fixes #2233 2019-02-15 15:44:49 +00:00
Dave Page c64373435b Make the Query Tool tab titles more concise and useful. Fixes #3544 2019-02-15 15:09:49 +00:00
Khushboo Vashi 622b67684d Optimise display of Dependencies and Dependents, and use on-demand loading of rows in batches of 100. Fixes #3959 2019-02-14 11:15:01 +00:00
Dave Page e5e154e268 PEP-8 fix 2019-02-14 09:22:22 +00:00
Dave Page 122336eb63 Update release notes. 2019-02-14 09:19:36 +00:00
Khushboo Vashi 17694ab467 Automatically expand child nodes as well as the selected node on the treeview if there is only one. Fixes #3559
This also ensure the browser state is cleared if the save interval is set to -1.
2019-02-14 09:18:08 +00:00
Dave Page 438116c574 Update Alpine Linux version in the docker container. This also updates the PG utilities to v11. Fixes #3991 2019-02-13 17:18:14 +00:00
Akshay Joshi 944cc55df7 Prevent an error when closing the Sort/Filter dialogue with an empty filter string. Fixes #3970 2019-02-13 16:44:57 +00:00
Dave Page 6af8efb5b1 You can't change colours in Preferences. Fixes #2990 2019-02-13 11:07:47 +00:00
Akshay Joshi 1f43b05c2a Fix alignment of checkbox to drop multiple schedules of pgAgent job. Fixes #3946 2019-02-13 14:55:52 +05:30
Akshay Joshi 10ee75bb1f Fix alignment of Close and Maximize button of Grant Wizard. Fixes #3906 2019-02-13 13:13:07 +05:30
Akshay Joshi 0aa93ac3ba Fix alignment of Connection type toggle switch of pgagent. Fixes #3974 2019-02-13 13:03:44 +05:30
Dave Page f72dcc23ea Allow X-FRAME-OPTIONS to be set in config.py. Default to SAMEORIGIN. Fixes #3439
DENY cannot be supported without breaking the debugger and query tool.
2019-02-12 16:17:14 +00:00
Dave Page 1fc66406f5 Don't embed docs and external sites in iframes, to allow the external sites to set X-FRAME-OPTIONS = DENY for security. Fxies #3985 2019-02-12 16:07:38 +00:00
Dave Page e0e7d6f1f6 Install a script to start pgAdmin (pgadmin4) from the command line when installed from the Python wheel. Fixes #1825 2019-02-12 14:04:45 +00:00
Dave Page 7f3e5c95c6 Add a missing bug fix. 2019-02-11 15:45:13 +00:00
Akshay Joshi 399d490342 Fix context sub-menu alignment on Safari. Fixes #3873 2019-02-11 13:38:11 +00:00
Ashesh Vashi c411520d98 Increase table header vertical padding to make headers more distinguished. 2019-02-11 10:58:19 +00:00
Dave Page 3d202dceeb Fix header. 2019-02-08 15:14:07 +00:00
Dave Page 23f36c5a41 Fix header. 2019-02-08 15:13:38 +00:00
Dave Page 6db4cfd9f1 Update libraries.txt, generated automatically using tools/dependency_inventory.py 2019-02-08 15:11:45 +00:00
Dave Page 9c3da10eea Python 2.7 fixes. 2019-02-08 15:06:38 +00:00
Dave Page a4cd2fe6c6 Add a script for auto-generating the library.txt file. 2019-02-08 14:48:59 +00:00
Ashesh Vashi eb3d3980e0 Use 'set_config(...)' function to update the 'bytea_output' settings
instead of 'UPDATE' statement, which is not allowed in the the read-only
instances.

Reported by: Robert J. Rotter
Solution provided by: Tom Lane

Fixes #3973
2019-02-08 10:18:32 +05:30
Cyril Jouve 28ce485cd2 requirements.txt simplifications. 2019-02-07 10:34:07 +00:00
Cyril Jouve a1ce6d9513 Remove another Python 2.6 hack 2019-02-07 10:32:40 +00:00
Ashesh Vashi 8efdc43177 Removing the font smoothing for the firefox as per feedback from Chethana 2019-02-07 15:30:55 +05:30
Ashesh Vashi 8c65608946 Adding font-smoothing CSS for the OSX for making the fonts more
eye-pleasing and softer to match it with the proposed design.
2019-02-07 15:21:55 +05:30
Akshay Joshi 22d458b01e Close connections gracefully when the user logs out of pgAdmin. Fixes #3942 2019-02-06 13:17:52 +00:00
Akshay Joshi 0cc37de404 Added release_notes_4_3 to the toctree for the documentation. 2019-02-06 17:03:56 +05:30
Akshay Joshi 8f4d1f14f2 1) Fix alignment of import/export toggle switch. Fixes #3963
2) Remove unnecessary options for toggle switch which are already the default options.
2019-02-06 16:49:36 +05:30
Dave Page c888b282ea Update libraries.txt 2019-02-06 10:11:16 +00:00
Khushboo Vashi 4a75053514 Clean up the unwanted extended versions of Backform Switch controls.
The Bootstrap Switch Control was extended only for alignment in most
places. IIntroduce a configurable option to set the necessary class
on the main div and also remove the extra extended controls.
2019-02-05 16:22:35 +00:00
Fred Escallier 3fae181c27 Update French translation. 2019-02-05 16:13:15 +00:00
Identifier Anonymous c6ba8899d1 Update Japanese translation. 2019-02-05 16:10:48 +00:00
Akshay Joshi 9a758f8fd3 Update version for release. 2019-02-04 18:04:33 +05:30
Akshay Joshi bb25d1a986 Update message catalogs 2019-02-04 17:59:28 +05:30
Aditya Toshniwal d2ee5c4e82 1) Fixed jasmine test cases.
2) Bootstarp4 toggle size should be mini for triggers
2019-02-04 17:43:19 +05:30
Aditya Toshniwal 605b1f4799 Fixed API test case for dashboard graphs. 2019-02-04 16:36:16 +05:30
Navnath Gadakh 5fdc1ffb38 Exclude HTTPExceptions from the all_exception_handler as they should be returned as-is. Fixes #3961 2019-02-04 10:31:47 +00:00
Dave Page 9c21c07fc4 Correct error message. 2019-02-04 10:23:43 +00:00
Akshay Joshi da83c3d1b8 Added 'pga4dash' comment for consistency 2019-02-04 15:51:07 +05:30
Dave Page 9df89f9bd5 There are no new features in 4.1 or 4.2, just fixes and optimisations. 2019-02-04 10:10:53 +00:00
Aditya Toshniwal aad7830d37 Dashboard graph optimization. Fixes #3941 2019-02-04 15:39:47 +05:30
Khushboo Vashi dae8186c2a Replace Bootstrap switch with Bootstrap4 toggle to improve the performance. Fixes #3051 2019-02-04 11:31:48 +05:30
Akshay Joshi 93234c86b7 Fix alignment of submenu for Internet Explorer. Fixes #3932 2019-02-01 17:55:38 +05:30
Cyril Jouve b786c4c140 Replace the PyCrypto module with the cryptography module. Fixes #3272 2019-01-31 15:57:27 +01:00
Dave Page cbfa614cf9 Ensure we use PIP 18.1 in the Docker build because of https://github.com/pypa/pip/issues/6197 2019-01-31 14:28:20 +01:00
Diego Augusto Molina da3b3de397 Expose the bind address in the Docker container via PGADMIN_BIND_ADDRESS. Fixes #3955 2019-01-31 14:26:35 +01:00
Cyril Jouve cbd8f8236a Remove Python 2.6 code that's now obsolete. Fixes #3935 2019-01-31 13:47:56 +01:00
Ashesh Vashi 38feacd04d Remove hacky way to open/close the dropdown submenu 2019-01-31 17:49:41 +05:30
Khushboo Vashi 6244463ac1 Fixed Statistics panel hang issue for 1000+ tables. Fixes #3664 2019-01-31 14:47:29 +05:30
Akshay Joshi 2afa3d8267 Remove icon for 'Refresh View' context menu of Materialized View and Added label for Definition control for consistency. 2019-01-31 13:20:44 +05:30
Khushboo Vashi 3b35aaa1d7 Fixed unable to drop multiple Rules and Foreign Tables from properties tab. Fixes #3899 2019-01-31 13:03:37 +05:30
Akshay Joshi 1bce0b5eef Update yarn lockfile. 2019-01-31 12:24:07 +05:30
Akshay Joshi 0bb4f005e5 Correct schema should be displayed in Materialized View dialog. Fixes #3916 2019-01-31 11:29:18 +05:30
Murtuza Zabuawala 317a04eafc Handle backend errors properly and display them correctly on GUI for Grant Wizard 2019-01-30 16:39:34 +05:30
Akshay Joshi 0e489df7b0 Fixed debugger issue for procedure inside package for EPAS servers. Fixes #3927 2019-01-30 14:48:58 +05:30
Aditya Toshniwal ab094e8f16 Increase frames splitter mouse hover area to make it easier to resize. Fixes #3865 2019-01-30 14:26:36 +05:30
Ashesh Vashi 430be1c4cb Increase the width, and show the pointer cursor of the button under the
sortable backgrid header
2019-01-30 11:55:35 +05:30
Ashesh Vashi 0e8f804279 Show the help string separate block in the calendar control to align the
input, and calendar button properly in case of help string is present.
2019-01-30 11:42:38 +05:30
Ashesh Vashi 1858596253 Override the font-family defined by bootstrap 2019-01-30 10:21:36 +05:30
Akshay Joshi fedbcd4045 Ensure that output of the query should be displayed even if Data Output window is detached from the Query Tool. Fixes #3697 2019-01-29 18:48:21 +05:30
Aditya Toshniwal 821496dc84 Fixed Query Tool Initialization Error. Fixes #3903 2019-01-29 11:45:31 +05:30
Murtuza Zabuawala 07f16f40cd Ensure that grant wizard should list down functions for EPAS server running with no-redwood-compat mode. Fixes #3935 2019-01-28 12:47:27 +05:30
Murtuza Zabuawala 2d7eaa63c4 Fix alignment of help messages in properties panels. Fixes #3929 2019-01-24 16:39:55 +00:00
Murtuza Zabuawala d9fc9fdc4d Ensure object names in external process dialogues are properly escaped. Fixes #3872 2019-01-24 16:34:18 +00:00
Harshal Dhumal 42c7ae372f Fixed dialog tab navigation for Backup and Restore dialog. Fixes regression of #3862 2019-01-24 17:15:12 +05:30
Khushboo Vashi d4fe31404c Fix syntax error on python 2.7 for the feature test. 2019-01-24 11:25:00 +05:30
Akshay Joshi f316e0533e 1) Messages tab of query tool should be clear on subsequent execution of table/view using View/Edit Data. Fixes #3608
2) Clear drop-down menu should be disabled for View/Edit Data. Fixes #3609
2019-01-23 18:25:33 +05:30
Dave Page 08cf2c8310 Ensure we set the fixed port options properly when configuring following an error. 2019-01-23 12:12:16 +00:00
Khushboo Vashi 406ada10f5 Fixed EXEC script for procedures. Fixes #3850 2019-01-23 14:44:24 +05:30
Aditya Toshniwal 1f29859040 Improve application level exception handling for unhandled exceptions. 2019-01-23 12:49:05 +05:30
Aditya Toshniwal fcfe0929d3 Ensure that browser should warn before close or refresh. Fixes #3849 2019-01-23 11:57:36 +05:30
Murtuza Zabuawala e27c2c421e Update chromedriver. 2019-01-22 16:11:01 +00:00
Diego Augusto Molina d92368f8e5 Use 'UPDATE pg_settings' for setting bytea_output as a
convenience hack for those running on old, unsupported versions of
PostgreSQL 'cos we're nice like that.
2019-01-22 15:56:29 +00:00
Akshay Joshi 11ab1918ea Fixed domain sql regression test for EPAS 2019-01-22 18:22:16 +05:30
Khushboo Vashi c6bae69b6f Proper SQL should be generated when create domain of type interval with precision. Fixes #3853 2019-01-22 17:53:36 +05:30
Harshal Dhumal ea87d6da8f Fixed keyboard navigation for Select2 and Privilege cell in Backgrid Fixes #3908 2019-01-22 16:35:57 +05:30
Harshal Dhumal f731ab730b Fixed keyboard navigation for dialog tabs. Fixes #3862 2019-01-22 16:28:32 +05:30
Akshay Joshi 3e7381414f Drop-down should be closed when click on any other toolbar button. Fixes #3858 2019-01-22 16:05:02 +05:30
Murtuza Zabuawala cd311ca8a9 Remove session from the grid on the dashboard when it is terminated. 2019-01-22 14:25:11 +05:30
Ganesh Jaybhay a0d2c45361 1. Proper alignment of help message with date time control.
2. Added help-block class for helpMessageClassName.
2019-01-22 11:22:32 +05:30
Nozomi Anzai 407f885559 Updated Japanese translation. 2019-01-21 16:54:41 +00:00
Aditya Toshniwal 6fc2e032f3 Fixed alignment of tree arrow icons for Internet Explorer. Fixes #3871 2019-01-21 17:40:05 +05:30
Khushboo Vashi 3ffeb4be45 Ensure that database restriction of server dialog should work with special characters. Fixes #3800 2019-01-21 17:24:46 +05:30
Aditya Toshniwal a9794d8ab4 Ensure that file format combo box value should not retained when hidden files checkbox is toggled. Fixes #3840 2019-01-21 16:22:59 +05:30
Khushboo Vashi aedb3997b0 Ensure that Backup/Restore button should work on single click. Fixes #3811 2019-01-21 15:27:55 +05:30
Akshay Joshi c7cbe0ff4a Data should be updated properly for FTS Configurations, FTS Dictionaries, FTS Parsers and FTS Templates. Fixes #3897 2019-01-21 14:36:39 +05:30
Aditya Toshniwal 27cdb835cb Correct order of Save and Cancel button for json/jsonb editing. Fixes #3891 2019-01-18 18:14:50 +05:30
Aditya Toshniwal 06ae799d02 Handle text wrapping in alertify dialog only when it is required. Regression of #3695 2019-01-18 17:54:49 +05:30
Akshay Joshi 69f6895224 Proper SQL should be generated when create function with return type as custom type argument. Fixes #3774 2019-01-18 15:11:35 +05:30
Akshay Joshi a163edec7a Inline edbspl trigger functions should not be visible in Grant Wizard. Fixes #3740 2019-01-17 18:37:36 +05:30
Aditya Toshniwal 48660508ce Fixed controls alignment responsiveness to docker size change. 2019-01-17 18:20:12 +05:30
Aditya Toshniwal f779378e8a Add right border on selected tree item. 2019-01-17 13:27:07 +05:30
Akshay Joshi c1aba3e055 1) Proper SQL should be generated when creating/changing column with custom type argument. Fixes #3838
2) Proper SQL should be generated when create procedure with custom type arguments. Fixes #3846
2019-01-17 13:13:15 +05:30
Aditya Toshniwal 6bbcaf6b27 Fixed SQL for when clause while creating Trigger. Fixes #3837 2019-01-16 14:46:34 +05:30
Aditya Toshniwal dec43d98dc Fixed execution time to show Hours part for long running queries in Query Tool. Fixes #3475 2019-01-16 12:57:52 +05:30
Aditya Toshniwal d7b0508305 Fixed SQL for foreign table options. Fixes #3453 2019-01-16 12:34:16 +05:30
Aditya Toshniwal 7ac4e2a9d9 Fixed following issues:
- Process watcher made fixed width with header changes, time details rounded to 2 decimals
 - Query history will show "No query history" if no query fired. Query editor default size increased.
 - Fixed a bug where New folder create button not working when in List mode and No files/folder present.
 - Other minor improvements.
2019-01-16 11:55:08 +05:30
Aditya Toshniwal 2a359d9d77 Proper error should be thrown when server group is created with existing name. Fixes #3693 2019-01-15 18:38:01 +05:30
Aditya Toshniwal 7b0c81126c Ensure long string should be wrap in alertify dialogs. Fixes #3695 2019-01-15 18:23:59 +05:30
Ashesh Vashi 6735c30292 Define some of the variables in _default.variables.scss with '!default'
suffix to allow override them while defining another theme.
2019-01-15 13:01:16 +05:30
Ashesh Vashi 1f082a0488 Fixed a typo in the wizard.js, which was not allowing to show the
maximize button in the Grant Wizard.

Also - change the CSS to set the top to '0' of the ajs-content (alertify
content container) for the frameless dialogs.
2019-01-15 12:59:13 +05:30
Akshay Joshi 8b135f2932 Update message catalog and version for release. 2019-01-11 23:34:24 +05:30
Aditya Toshniwal d4a2f1b8cd Ensure that last row of table data should be visible and user will be able to add new row. Fixes #3866 2019-01-11 23:25:05 +05:30
Dave Page 14f462e9dc Fix PEP-8 issues. 2019-01-11 22:13:17 +05:30
Aditya Toshniwal d641b47adb Make the browser more robust in the face of multibyte characters in SQL_ASCII databases. Fixes #3877 2019-01-11 21:55:49 +05:30
Akshay Joshi 252e05ef29 Fix SQL generated for tables with inherited columns. Fixes #3505 2019-01-11 21:50:02 +05:30
Akshay Joshi 8fb340d23b Fix ordering of VACUUM options which changed in PG11. Fixes #3836
While we're at it, fix the JSON handling in the maintenance/backup/restore routes.
2019-01-10 15:29:55 +05:30
Aditya Toshniwal a8167f0a72 Fix Jasmine tests. 2019-01-10 15:02:51 +05:30
Aditya Toshniwal f7fa18f827 Ensure the context menu works after a server is renamed. Fixes #3575 2019-01-10 11:52:52 +05:30
Akshay Joshi 01b87d4834 Don't show system catalogs in the schemas property list unless show system objects is enabled. Fixes #3842 2019-01-10 11:41:09 +05:30
Aditya Toshniwal 868622912e Fix help for the backup/restore dialogues. Fixes #3861 2019-01-10 11:20:42 +05:30
Fred Escallier 6d0c4bc116 Updated French translation 2019-01-08 17:18:38 +05:30
Aditya Toshniwal 3c7742f3b2 Fixed an issue while creating export job. Fixes #3856 2019-01-08 13:02:29 +05:30
Dave Page 11870006c3 Correct dashboard title. 2019-01-07 18:02:22 +05:30
Akshay Joshi ea514115c3 Update the release note version in toctree 2019-01-07 16:34:25 +05:30
Akshay Joshi 561ee7556f Update version for release 2019-01-07 16:14:58 +05:30
Akshay Joshi e2857332b7 Update message catalogs 2019-01-07 16:09:25 +05:30
Aditya Toshniwal d361e604c1 Further style tweaks. 2019-01-07 16:03:54 +05:30
Dave Page 419bb7f995 Include rtf files in the copyright updater. 2019-01-07 14:38:12 +05:30
Dave Page 365cbc34f5 Fix MacOS package copyright. 2019-01-07 14:37:43 +05:30
Aditya Toshniwal e9ba2e036a Further style tweaks. 2019-01-07 14:24:44 +05:30
Dave Page c5d49bd862 Fix copyright year. 2019-01-07 11:28:39 +05:30
Identifier Anonymous 23b649fbd1 Update Japanese translation. 2019-01-04 16:17:43 +00:00
Khushboo Vashi ce1c06d7f1 Ensure we display the relation name (and not the OID) in the locks table wherever possible. Fixes #3702
Note that at the server level we fetch the data from pg_locks in the maintenance database,
so it can not fetch the pg_class relation for tables in other databasess (relation::regclass).
2019-01-04 14:45:28 +00:00
Dave Page fb02f8b1be Update release notes. 2019-01-04 13:11:20 +00:00
Akshay Joshi 4e27bf989f Display event trigger functions correctly on EPAS. Fixes #3549 2019-01-04 13:06:45 +00:00
Dave Page b5c7a108ab Put the appname back how it should be! 2019-01-04 10:54:35 +00:00
Dave Page d6778aa915 Bump version prior to 4.0 2019-01-04 10:53:10 +00:00
Dave Page 7d2ab6a685 Fix copyright notice. 2019-01-04 10:52:54 +00:00
Dave Page 7f40444087 Update WSGI instructions for Windows for Python 3. Fixes #3847. Patch from Benjamin Hayes. 2019-01-04 09:54:24 +00:00
Dave Page ad56e7fb12 Update message catalogs 2019-01-03 15:27:36 +00:00
Dave Page 598f69b63d Improve wording. 2019-01-03 15:24:47 +00:00
Aditya Toshniwal 7d765fea04 Further styling fixes. 2019-01-03 14:50:24 +00:00
Aditya Toshniwal 1283c22bb9 Fix a webpack issue that could cause the Query Tool to fail to render. Fixes #3679 2019-01-03 14:43:45 +00:00
Dave Page 2817ec438a Convert batch file line endings in an attempt to end the insanity of missing labels. 2019-01-03 14:33:43 +00:00
Akshay Joshi c455dda3ce Ensure auto complete should works for columns from a schema-qualified table. Fixes #3810 2019-01-03 18:59:57 +05:30
Akshay Joshi 3a130d68c5 Ensure auto complete should works when first identifier in the FROM clause needs quoting. Fixes #3809 2019-01-03 17:22:42 +05:30
Dave Page 6a9406237a Update yarn lockfile. 2019-01-02 12:57:21 +00:00
Dave Page d7da8be486 Make the upgrade check key configurable. 2019-01-02 12:56:39 +00:00
Aditya Toshniwal 6e5b54eb1a Increase default startup timeout and give progressive messages when things are slow. 2019-01-02 11:57:33 +00:00
Murtuza Zabuawala e23d307c56 Update copyright notices for 2019 2019-01-02 15:54:12 +05:30
Aditya Toshniwal 86ecf9c84e Fixed following:
- Base font size changed from 0.815rem to 0.875rem, for navbar from 0.875rem to 0.925rem.
- Dialog sizes made consistent throughout the application. Now there are 3 size options for width and height each - sm, md, lg. Combination of any of these to be used hereafter
- Alignment fix for controls of Node properties dialogs which includes showing text and label in one line without dialog size change, checkbox alignment, switch control alignment at places and other minor improvements in other dialogs
- Error message design change in dialogs validation
- SQL Editor data grid editor popup design changes which were missed
- Design change for dashboard server activity grid
- Login page language dropdown color fix
- Properties accordion collapse design fix
- Help, Info icon fixed across all dialogs which were not working if clicked exactly on the text
- Added missing icon with buttons at few places
- Shadow behind the dialogs is increased to make it look clearly separated and depth.
- Control Alignment fix in maintenance dialog
- Min height of alertify dialogs set for better UX
- File dialog design fix when no files found
- Grant wizard fixes - Scroll bar visibility on first page, use full space for SQL generated on the last page
- Browser toolbar buttons changed to sync with SQL editor toolbar buttons
- Rounded corners for docker floating dialog (no properties)
- Renaming file in file dialog should show original file name
- SQL data grid text edit popup buttons behaviour was swapped. This is fixed.
- Import/Export dialog changes as per new design.
2019-01-02 15:07:59 +05:30
Ashesh Vashi 1b9c841c15 pgBrowser tree does not need to save tree state, when 'browser' module
is initialized from the tools like query editor, debugger, etc.

Refs #3559
2019-01-02 10:48:13 +05:30
Akshay Joshi 41c028f944 Ensure that null values handled properly in CSV download. Fixes #3780 2019-01-01 15:15:36 +05:30
Ashesh Vashi 5799ac14ba Improvement in the look and feel of the whole application
Changed the SCSS/CSS for the below third party libraries to adopt the
new look 'n' feel:
- wcDocker
- Alertify dialogs, and notifications
- AciTree
- Bootstrap Navbar
- Bootstrap Tabs
- Bootstrap Drop-Down menu
- Backgrid
- Select2

Adopated the new the look 'n' feel for the dialogs, wizard, properties,
tab panels, tabs, fieldset, subnode control, spinner control, HTML
table, and other form controls.

- Font is changed to Roboto
- Using SCSS variables to define the look 'n' feel
- Designer background images for the Login, and Forget password pages in
  'web' mode
- Improved the look 'n' feel for the key selection in the preferences
  dialog
- Table classes consistency changes across the application
- File Open and Save dialog list view changes

Author(s): Aditya Toshniwal & Khushboo Vashi
2018-12-21 17:14:55 +05:30
Khushboo Vashi a000dc6f60 Further improvements to treeview restoration. Fixes #3559 2018-12-21 11:36:11 +00:00
Dave Page 12b7e03085 Add flask-migrate to the container doc build as it's now required. 2018-12-21 10:58:15 +00:00
Aditya Toshniwal 943fc25f60 Make the setup process more robust against aborted executions. Fixes #3830 2018-12-21 10:30:49 +00:00
Dave Page f62d35bf3c Don't lose the comma! 2018-12-20 11:03:54 +00:00
Dave Page e2df00fc05 Use the standard copyright string. 2018-12-20 10:58:31 +00:00
Murtuza Zabuawala 36db047071 Add a copyright update tool. 2018-12-20 10:54:54 +00:00
Aditya Toshniwal ffae65bdbe Ensure table definitions include WHERE clauses on EXCLUDE constraints. Fixes #3726 2018-12-20 10:19:54 +00:00
Khushboo Vashi d14fb85fff Tweak the wording on the Grant Wizard. Fixes #3796 2018-12-20 10:17:00 +00:00
Murtuza Zabuawala 13dbfff11d Ensure identifiers are properly displayed in the plan viewer. Fixes #3821 2018-12-20 10:09:11 +00:00
Murtuza Zabuawala ed01dbd0ef Ensure the dashboard tabs are styles correctly. Fixes #3824 2018-12-20 09:53:35 +00:00
Dave Page cb880678cc Python 2.6 support is officially deprecated. 2018-12-20 09:15:26 +00:00
Akshay Joshi 7515e08578 Fix an issue when user define Cast from smallint->text is created. Fixes #3753 2018-12-19 18:02:04 +05:30
Akshay Joshi c973c3387e Include the WHERE clause on EXCLUDE constraints in RE-SQL. Fixes #3726 2018-12-18 13:37:04 +00:00
Khushboo Vashi 72ba5bdaee Fix drop/drop cascade regression. Fixes #3823 2018-12-18 09:45:06 +00:00
Dave Page 62bb3ca097 Correct bug number, per Khushboo. 2018-12-13 11:51:57 +00:00
Khushboo Vashi e666b0fab0 Fix an issue that could cause the Query Tool to fail to render. Fixes #3433 2018-12-13 11:15:55 +00:00
Khushboo Vashi dfbb2212c0 Prevent attempts to bulk-drop schema objects. Fixes #3797 2018-12-13 11:03:30 +00:00
Akshay Joshi 52fb8e197f Increase the size of the resize handle of the edit grid text pop-out. Fixes #3083
Allow horizontal sizing of the edit grid text pop-out. Fixes #3805
2018-12-13 10:56:45 +00:00
Dave Page d68eede3e6 Allow query plans to be downloaded as SVG files. Fixes #3589 2018-12-13 10:49:56 +00:00
Murtuza Zabuawala 04735e631e Minor bootstrap 4 fixes:
- Removed 'collapse in' css from wizard as we have 'collapse show' in Bootstrap-4
- Fixed 'Select/Unselect All' button layout for Select2 control used in pgAgent.
2018-12-13 10:28:58 +00:00
Akshay Joshi 90b2d2e536 Update release notes. 2018-12-10 15:07:27 +05:30
Dave Page 3448465e82 Defione Q_NULLPTR for Qt 4. 2018-12-06 11:08:17 +00:00
Dave Page 72a2db53c3 Use Q_NULLPTR instead of nullptr as some of our older build machines don't support C++ 11. 2018-12-06 10:40:49 +00:00
Dave Page 5cfe0ef115 Use C++ style casts. 2018-12-06 10:36:57 +00:00
Dave Page 312bcbc83f Use nullptr instead of NULL or 0. 2018-12-06 10:30:07 +00:00
Dave Page 566ff7b609 Use nullptr instead of NULL or 0. 2018-12-06 10:24:52 +00:00
Dave Page 45cd17af84 Use nullptr instead of NULL or 0. 2018-12-06 10:17:47 +00:00
Khushboo Vashi 12ef55334b Fix encoding test for older Python versions. 2018-12-06 10:15:58 +00:00
Dave Page f2773354c8 Remove blank messages from the Qt project file as they don't work on newer versions of QMake and aren't needed anyway. 2018-12-06 09:50:21 +00:00
Akshay Joshi 431516ad61 Ensure the browser toolbar buttons work in languages other than English. Fixes #3798 2018-12-06 09:25:15 +00:00
Dave Page 1141930178 Allow servers to be pre-loaded into container deployments. Fixes #3801 2018-12-05 17:16:46 +00:00
Dave Page 55402ec7d9 Run Postfix in the container build so passwords can be reset etc. Fixes #3599 2018-12-05 14:44:23 +00:00
Dave Page 980d1e0292 Fix PEP8 issue. 2018-12-04 17:07:41 +00:00
Dave Page 739864c7d1 Update release notes. 2018-12-04 17:04:27 +00:00
Khushboo Vashi 7e3bd8b88a Fix an encoding issue in the query tool. Fixes #3711 2018-12-04 17:03:19 +00:00
Dave Page 6428ffcdaf Fix a minor CSS issue in the file dialogue's upload panel. 2018-12-04 13:12:02 +00:00
Murtuza Zabuawala 660293456c Don't use a hard coded server ID for mocking! 2018-12-04 13:07:35 +00:00
Aditya Toshniwal 0100997aab Hide Radio buttons that should not be shown on the maintenance dialogue. 2018-12-04 11:00:58 +00:00
Dave Page c80b91876a Remove file added in error. 2018-12-04 10:49:11 +00:00
Murtuza Zabuawala f4f0fa0e47 Fix utility route check for Windows. 2018-12-04 10:46:59 +00:00
Aditya Toshniwal 851c0cfff3 Ensure browser toolbar buttons are always shown. 2018-12-03 10:09:36 +00:00
Murtuza Zabuawala 9a3047c89c Add API tests for utility check route. Fixes #3790 2018-11-30 09:56:41 +00:00
Akshay Joshi d801ed5008 Add titles to the code areas of the Query Tool and Debugger to ensure that panels can be re-docked within them. Fixes #3619 2018-11-29 15:47:48 +00:00
Akshay Joshi bdf9f3404f Fix handling of array types as inputs to the debugger. Fixes #3354 2018-11-27 11:18:47 +00:00
Murtuza Zabuawala c79ac2f8d2 Fix some minor CSS issues. 2018-11-27 10:57:30 +00:00
Identifier Anonymous 63f7fbcf7d Update Japanese translation. 2018-11-27 10:54:01 +00:00
Fred Escallier d61fc8b8db Update French translation. 2018-11-27 10:52:01 +00:00
Akshay Joshi 527e084ef7 Bump version number for release 2018-11-26 15:35:26 +05:30
Akshay Joshi b6842e88ac Update message catalogs 2018-11-26 15:31:05 +05:30
Dave Page f0327f5219 Add the ability to import and export server definitions from a config database. Fixes #3772 2018-11-21 16:09:20 +00:00
Akshay Joshi 3cfc3366d7 Fixed the height and width of the Table dialog. 2018-11-21 18:41:03 +05:30
Akshay Joshi 05e067035f Prevent the debugger controls being pressed again before previous processing is complete. Fixes #3734
Note that this needs to be re-visited in the future, as the current fix is somewhat hacky.
2018-11-20 16:35:27 +00:00
Akshay Joshi 8b5abdfa8f Fix changes to the NOT NULL and default value options in the Table Dialogue. Fixes #3742 2018-11-20 16:29:20 +00:00
Dave Page 782b7419f6 Fix toggle breakpoints buttons in the debugger. Fixes #3736 2018-11-20 16:22:56 +00:00
Dave Page bbb8433af3 Don't double-list the connecting page in the index. 2018-11-19 13:55:18 +00:00
Akshay Joshi ef68cae1f1 Properly report errors when debugging cannot be started. Fixes #3723 2018-11-15 15:18:12 -05:00
Akshay Joshi 9b0889842d Fix dropping of multiple functions/procedures at once. Fixes #3746 2018-11-14 08:40:21 -05:00
Akshay Joshi eae18f6f14 Ensure previous notices are not removed from the Messages tab in the Query Tool if an error occurs during query execution. Fixes #3016 2018-11-14 08:27:47 -05:00
Dave Page 29ed7ec881 Fix standalone setup script execution. 2018-11-05 13:39:43 +00:00
Akshay Joshi 220fdf583e Allow use of 0 (integer) and empty strings as parameters in the debugger. Fixes #3629 2018-11-02 16:44:09 +00:00
Dave Page 628f0d254e Fix resource group multi-drop test. 2018-11-01 08:54:33 +00:00
Dave Page 7dde5d52d0 Fix regression test. 2018-10-31 12:18:13 +00:00
Aditya Toshniwal 95cda78bdb Remove some CSS for the body level that isn't required and may cause issues. 2018-10-31 12:13:13 +00:00
Khushboo Vashi e59eaedfd0 Fix buildfarm failures. 2018-10-31 11:35:13 +00:00
Khushboo Vashi f17979141c Add support for dropping multiple objects at once from the collection Properties panel. Fixes #1513 2018-10-31 10:30:37 +00:00
Akshay Joshi 3359a0de7a Allow the selection order to be preserved in the Select2 control to fix column ordering in data Import/Export. Fixes #3029 2018-10-31 10:09:40 +00:00
Identifier Anonymous 6e03775f05 Japanese translation update. 2018-10-31 09:52:49 +00:00
Akshay Joshi b58f288eec Fixed fatal error while launching the pgAdmin4 3.5. Update the version of the Flask to 0.12.4 for release. Fixes #3730 2018-10-31 13:36:43 +05:30
Murtuza Zabuawala 140372a5cf Fix minor alert layout issue on IE 11. 2018-10-30 09:27:14 +00:00
Akshay Joshi d97431cb4f Bump version number for release. 2018-10-29 22:29:07 +05:30
Akshay Joshi 1e14b0d068 Update message catalogs 2018-10-29 22:21:40 +05:30
Dave Page 4ff0fcdd82 Update to latest Flask, to avoid a security issue. 2018-10-29 14:17:30 +00:00
Akshay Joshi 696fbfb8b9 Fix CREATE Script functionality for EDB-Wrapped functions. Fixes #3676 2018-10-29 11:54:11 +00:00
Dave Page be47390baf Fix the Docker build. 2018-10-29 11:01:47 +00:00
Akshay Joshi 0d5a6eeeff Ensure that utility existence check should work for schema and
other child objects while taking Backup/Restore. Fixes #3722
2018-10-25 18:55:21 +05:30
Akshay Joshi 6ddab02769 1) Fixed process watcher status message when user has stopped the process.
2) Saved the process state in sqlite database.
2018-10-25 17:03:34 +05:30
Aditya Toshniwal 091aa62084 Fixed background colour while replacing a file in File Manager dialog. 2018-10-24 17:53:06 +05:30
Akshay Joshi 2058cdf662 Fixed test cases for Utilities when default_binary_path is not provided in test_config file. 2018-10-22 13:22:35 +05:30
Akshay Joshi 6bc6bc7f60 Ensure that Utilities(Backup/Restore/Maintenence/Import-Export) should not be started
if binary path is wrong and also added 'Stop Process' button to cancel the process.
2018-10-22 12:35:53 +05:30
Akshay Joshi 370df47042 Fixed issue where session files are not deleted first time when pgAdmin4 server started,
it always wait for CHECK_SESSION_FILES_INTERVAL which is 24 hours by default.
2018-10-18 18:02:45 +05:30
Usman Muzaffar 9ae49cbf31 Test case fixes for server mode. 2018-10-18 09:39:09 +01:00
Harshal Dhumal 822d384746 Purge connections from the cache on logout. Fixes #3703 2018-10-17 12:42:41 +01:00
Harshal Dhumal ce31726af5 Fix connection garbage collector. Fixes #3700 2018-10-17 12:35:45 +01:00
Dave Page 494a8ac3fe Release note update 2018-10-17 12:30:01 +01:00
Akshay Joshi 50738db2b8 Fix syntax error when creating new pgAgent schedules with a start
date/time and exception. Fixes #3638

- Fixed syntax error.
- Update/Delete exceptions are not working, SQL is wrong.
- Wrong exception time is shown, it should shown in UTC as datatype of
  the column is timestamp with out timezone.
- Added test cases for Schedule and Steps of pgAgent Job.
2018-10-17 12:28:31 +01:00
Aditya Toshniwal 6fa6939f52 Additional feature test fixes:
1) Changes required for working with Bootstrap 4.
2) Change to fix the timeout exception when waiting for element (tested multiple times on multiple server, did not occur to me thereafter)
3) Removed reset layout after each test case. Instead, delete the layout entry from sqlite db file and do a plain refresh. This will save some time and will also remove dependency on reset layout menu.
4) Disables tree state saving when feature test run starts. Feature tests got confused with auto expanding tree.
2018-10-17 11:50:22 +01:00
Akshay Joshi ef0e53e8fc Fixed pep8 issue 2018-10-15 17:41:21 +05:30
Akshay Joshi fd2c2c4ff7 Fixed minor issue in SQL autocomplete. 2018-10-15 17:36:11 +05:30
Aditya Toshniwal d6c4911135 Fixed calender control issues with Bootstrap 4 2018-10-12 15:02:38 +05:30
Aditya Toshniwal 6991c06937 Additional Bootstrap 4 fixes:
- Calendar control
- Query Tool's Sort/Filter drop down
- Backform hidden controls
- Debugger toolbar
2018-10-11 13:23:59 +01:00
Usman Muzaffar 3f16a0c52c Log process exceptions using ASCII mode to avoid issues with string concatenation. 2018-10-11 13:13:08 +01:00
Aditya Toshniwal 4a6426d3e7 Doc updates after renaming SQL Editor section of the Preference panel. 2018-10-11 09:10:02 +01:00
Khushboo Vashi 235a75202d Fixed minor issue in saving tree state logic. 2018-10-11 11:22:24 +05:30
Dave Page 55cf0cf2f9 Fix message. 2018-10-10 13:30:55 +01:00
Aditya Toshniwal 0565f8dd78 Update to use Bootstrap 3 instead of Bootstrap 4. Fixes #3562 2018-10-10 12:43:26 +01:00
Dave Page bdf90e67a7 When an execution is cancelled in query tool, two different messages are encountered at different time. There is no exact pattern for them. So now, the test case will look for any one of following message in the output text box
i) canceling statement due to user request
ii) Execution cancelled!
2018-10-10 11:23:14 +01:00
Akshay Joshi 7144db7f5a Cleanup session files periodically. Fixes #3674 2018-10-09 11:34:13 +01:00
Murtuza Zabuawala c66840bc8e Fix some styling regressed in #2927. 2018-10-09 11:22:54 +01:00
Aditya Toshniwal 26ad6d4c5d Rename the 'SQL Editor' section of the Preferences to 'Query Tool' as it applies to the whole tool, not just the editor. Fixes #3660 2018-10-08 11:43:02 +01:00
Fred Escallier 87b64cf3c0 Update French translation. 2018-10-08 11:18:59 +01:00
Murtuza Zabuawala 0f1651686b Code refactoring:
- Move the duplicate code for closing the background process dialog into 'test_gui_helper.py',
- Simplify the logic by removing the duplicate steps to insert/update binary paths for each server type from 'test_utils.py'.
2018-10-08 11:09:30 +01:00
Khushboo Vashi 528ea88dec Save the treeview state periodically, and restore it automatically when reconnecting. Fixes #1253 2018-10-08 10:03:19 +01:00
Dave Page 44ef501283 Fix PEP-8 issue. 2018-10-03 10:12:00 +01:00
Usman Muzaffar eb27fa29b1 Test stabilisation, mostly for Windows. Fixes #3136 2018-10-03 10:03:35 +01:00
Identifier Anonymous a89ab88097 Updated Japanese translation. 2018-10-02 15:44:05 +01:00
Dave Page c092495b7a Bump version number for release. 2018-10-01 10:25:19 +01:00
Dave Page 8e2ede21a0 Update message catalogs 2018-10-01 10:23:23 +01:00
Akshay Joshi 15fe26a710 Fix handling of backslashes in the edit grid. Fixes #3551 2018-09-25 10:34:33 -04:00
Dave Page 530017809a Update supported Python versions to match reality. 2018-09-24 16:22:06 -04:00
Akshay Joshi 6c2c18106f Swap the Schema and Schemas icons and Catalog and Catalogs icons that had been used the wrong way around. 2018-09-24 14:11:23 -04:00
Aditya Toshniwal 1b20831338 Ensure changes to Query Tool settings from the Preferences dialogue are applied before executing queries. Fixes #3657 2018-09-19 16:50:11 +01:00
Akshay Joshi 6a46e43567 Ensure the runtime can startup properly if there are wide characters in the logfile path on Windows. Fixes #3464 2018-09-18 15:08:31 +01:00
Akshay Joshi 003889f15e Added null checks and some more startup logs for runtime 2018-09-17 15:16:48 +05:30
Dave Page a2258c83e9 Chance an update to Node 8. Let's see how Jenkins likes this. 2018-09-14 17:04:51 +01:00
Atle Frenvik Sveen 370d9c72ec Update some of the JS dependencies to ensure we can use Node 10. Fixes #3649 2018-09-14 16:55:13 +01:00
Akshay Joshi 026969e3d1 Add a startup logger to the runtime to aid with debugging. 2018-09-14 14:41:52 +01:00
Akshay Joshi 0ec3224212 Fix logic around validation and highlighting of Sort/Filter in the Query Tool. Fixes #3607 2018-09-14 14:18:43 +01:00
Aditya Toshniwal 38ddea038a Fix support for the CLOB datatype in EPAS. Fixes #3596 2018-09-13 13:45:06 +01:00
Akshay Joshi d6c64e8f11 Fixed issue where wrong menu id passed when click on 'View Data' tool button 2018-09-12 11:00:58 +05:30
Akshay Joshi 4010dc80a9 Ensure auto-complete works for objects in schemas other than public and pg_catalog. Fixes #3630 2018-09-11 12:56:14 +01:00
Akshay Joshi 9c5e42c7a6 Used SCSS variables instead of hardcoded value for color and moved code from CSS to SCSS file. 2018-09-11 11:18:37 +05:30
Akshay Joshi 532cbe216a Add shortcuts for View Data and the Query tool to the Browser header bar. Fixes #3564 2018-09-10 15:16:13 +01:00
Dave Page 1850a3a995 Remove unnecessary screenshot. 2018-09-10 13:17:59 +01:00
Usman Muzaffar 22776d2e14 Further stability fixes for the feature tests. 2018-09-10 13:15:55 +01:00
Dave Page 7f1b588c69 Remove package-lock.json to stop Yarn bleating. 2018-09-06 15:00:52 +01:00
Aditya Toshniwal 8f88443e15 Doc updates for optional data point markers and mouse-over tooltips to display values on graphs. Fixes #3514 2018-09-06 14:54:25 +01:00
Aditya Toshniwal a74b9c96c1 Add optional data point markers and mouse-over tooltips to display values on graphs. Fixes #3514
Ensure queries are no longer executed when dashboards are closed. Fixes #3576
2018-09-05 17:25:11 +01:00
Fred Escallier 0e59be237b Update French translation (and rebuild the rest).
1779 of 1994 messages (89%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1994 of 1994 messages (100%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1781 of 1994 messages (89%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1405 of 1994 messages (70%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
1449 of 1994 messages (72%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1782 of 1994 messages (89%) translated in pgadmin/translations/ko/LC_MESSAGES/messages.po
1994 of 1994 messages (100%) translated in pgadmin/translations/fr/LC_MESSAGES/messages.po
1835 of 1994 messages (92%) translated in pgadmin/translations/es/LC_MESSAGES/messages.po
2018-09-05 17:08:29 +01:00
Identifier Anonymous 6a4689599d Update Japanese translation (and rebuild the rest).
1779 of 1994 messages (89%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1994 of 1994 messages (100%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1781 of 1994 messages (89%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1405 of 1994 messages (70%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
1449 of 1994 messages (72%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1782 of 1994 messages (89%) translated in pgadmin/translations/ko/LC_MESSAGES/messages.po
1903 of 1994 messages (95%) translated in pgadmin/translations/fr/LC_MESSAGES/messages.po
1835 of 1994 messages (92%) translated in pgadmin/translations/es/LC_MESSAGES/messages.po
2018-09-05 17:03:56 +01:00
Dave Page 6e54a13ba2 Update test cases to match style changes 2018-09-04 12:04:57 +01:00
Dave Page fa1cf7b7a3 Include the 3.4 release notes in the toctree. 2018-09-04 11:47:20 +01:00
Aditya Toshniwal 82c9cca683 Move all CSS into SCSS files for consistency and ease of colour maintenance etc. Fixes #2927 2018-09-04 11:24:51 +01:00
Dave Page 61f00a0cbb Update versions for 3.3. 2018-09-03 10:11:34 +01:00
Dave Page 43ccfd3af6 Update message catalogs 2018-09-03 10:09:10 +01:00
Akshay Joshi 09c388ecee Correct the documentation of View/Edit data. Fixes #3604 2018-08-31 19:02:26 +05:30
Xuri Gong 89e283fbc2 Add a geometry viewer that can render PostGIS data on a blank canvas or various map sources. Fixes #1407 2018-08-30 13:59:44 +01:00
Akshay Joshi b665f8fac8 Fixed auto complete issue for EPAS database server. 2018-08-30 12:30:00 +05:30
Aditya Toshniwal 283a69a21a Fix auto scrolling issue in debugger on step in and step out. Fixes #3554. 2018-08-29 18:20:45 +05:30
Harshal Dhumal 208ee4da8c Fixed debugger execution issues:
1. Allow debugging of EPAS package procedures/functions with INOUT params.
 2. Add support for indirect debugging for EPAS package procedures/functions.
 3. Allow debugging with NULL param values.
 4. Remove saved debug arguments.

Fixes #3191
2018-08-29 17:44:37 +05:30
Maxim Zakharov b7ad95907a When building the Windows installer, copy system Python packages before installing dependencies to ensure we don't end up with older versions than intended. Fixes #3579 2018-08-29 11:33:25 +01:00
Murtuza Zabuawala 9c8cf26784 Ensure that refresh button on dashboard should refresh the table. Fixes #3525 2018-08-29 11:24:45 +05:30
Akshay Joshi dd3c7c94e6 Ensure external table node should be visible only for GPDB. Fixes #3548 2018-08-27 19:11:25 +05:30
Aditya Toshniwal ea787b30eb Fixed auto complete issues for Python 2.6 2018-08-27 16:37:00 +05:30
Akshay Joshi 7a3f3046df Merge pgcli code with version 1.10.3, which is used for auto complete feature. 2018-08-27 15:00:56 +05:30
Aditya Toshniwal 25679fd542 Ensure sort/filter dialog should display proper message after losing database connection. Fixes #3561 2018-08-22 16:38:31 +05:30
Murtuza Zabuawala 0f17b4f738 Ensure 'select all' and 'unselect all' working properly for pgAgent schedule. Fixes #3313. 2018-08-22 15:13:40 +05:30
Akshay Joshi 0ab1305ddf 1. Added new backup/restore options for PostgreSQL 11. Fixes #3503
2. Ensure backup should work with '--data-only' and '--schema-only' for any format. Fixes #3347
3. Added supported "Dump Options" for "pg_dumpall" which was not there since pgAdmin 3.
4. Fixed issue where "--clean" should not clubbed with "--data-only" while taking backup.
5. Fixed "--oids" should not clubbed with "--inserts" or "--column-inserts" while taking backup.
2018-08-22 12:17:50 +05:30
Harshal Dhumal 013ad7446f Make the session thread safe.
As sessions in pgAdmin4 are filesystem based session, they need locking
for avoiding the access from multiple threads, specially running as an
WSGI application.

Fixes #3547
2018-08-22 11:58:27 +05:30
Usman Muzaffar 70c95fcdd5 Stabilise feature tests for continuous running on CI systems. Fixes #3136. 2018-08-21 17:39:36 +05:30
Aditya Toshniwal 57660d131f 1) Fix sort/filter dialog editing issue. Fixes #3558.
2) Fix sort/filter dialog issue where it incorrectly requires ASC/DESC. Fixes #3325.
2018-08-21 13:05:40 +05:30
Joao De Almeida Pereira 46d4bf027d Ensure sql for Role should be visible in SQL panel for GPDB. Fixes #3578 2018-08-17 14:50:16 +05:30
Akshay Joshi d68c967423 Fix passing of --globals-only to global backups. 2018-08-16 14:20:32 +01:00
Aditya Toshniwal ff87cf5544 Correctly handle "values" in web/pgadmin/__init__.py -> strip_version_number which can be None in some cases and will cause exception when None 2018-08-16 09:23:58 +01:00
Ashesh Vashi 0a8d7a37b9 Changed the icon, label, inode, etc. propely while refreshing the
browser tree item.

Refs #3461
2018-08-14 10:18:03 +05:30
Akshay Joshi 008359ad3a Ensure that refreshing a node also updates the Property list. Fixes #3461 2018-08-13 13:47:07 +01:00
Ashesh Vashi ffd41009ea We were refering to the wrong 'name' variable during cleaning up the
backform controls.
2018-08-12 15:44:52 +05:30
Akshay Joshi 7b2c1bb9f8 Handle connection errors properly in the query tool. Fixes #3528 2018-08-10 13:51:32 +01:00
Isaias Sanchez 2eac2f43ac Add a Spanish translation. Fixes #3553 2018-08-08 17:17:26 +01:00
Akshay Joshi 7117ce6a22 Fix keyboard shortcuts layout in the preferences panel. Fixes #3407 2018-08-07 14:41:50 +01:00
Identifier Anonymous 3a5684510a Updated Japanese translation. 2018-08-07 13:07:47 +01:00
Khushboo Vashi d4b3ded725 Add missing library to list. 2018-08-07 09:21:30 +01:00
Akshay Joshi 7479467a54 Update version and message catalog for release. 2018-08-06 16:15:11 +05:30
Akshay Joshi c8c5f83dfe Add support to save and clear SSH Tunnel password. Fixes #3511 2018-08-06 15:56:46 +05:30
Akshay Joshi 52fc0846cd pgAdmin4 should work with python 3.7, Fixes #3458 2018-08-06 15:35:03 +05:30
Aditya Toshniwal cb8a288f85 Added version number for URL's to ensure that files are only cached on a per-version basis. Fixes #2136. 2018-08-06 15:21:10 +05:30
Akshay Joshi a17aa212f0 COST statement should not be automatically duplicated after creating trigger function. Fixes #3526 2018-08-06 11:54:25 +05:30
Akshay Joshi e9e8b0b433 1. Change the string from 'Reset server password" to "Clear Saved Password" and move this sub menu from File to Object menu.
2. Move the "Change Password..." menu from 'File' to 'Object' menu.
RM #3074
2018-08-03 16:41:01 +05:30
Akshay Joshi 8f45e6fe68 View Data->Filtered Rows dialog should be displayed. Fixes #3527 2018-08-02 18:15:58 +05:30
Ashesh Vashi c4267f0878 Fixed couple of issues for the dashboard.
- Filter for the grids were showing on the server level dashboard.
  It was regression of the commit-id: f7e43d5e5
- Mark 'is_server_dashboard', and 'is_database_dashboard' to false, when
  the node has its own dashboard URL defined.
2018-07-30 13:33:20 +05:30
Khushboo Vashi 0cb25bde63 Add support for primary key, foreign key, unique key, indexes and triggers on partitioned tables for PG/EPAS 11. Fixes #3412 2018-07-27 17:31:21 +05:30
Akshay Joshi 0138dee989 Add support for reset saved password. Fixes #3074 2018-07-27 14:36:42 +05:30
Ashesh Vashi 00139f7750 Remove the unused variable to satisfy the linter. 2018-07-27 13:43:37 +05:30
Ashesh Vashi 5ff2942b4d Improved the functionality of enable/disable the auto-collection of
the graph data.

- Dashboard is intereseted only on the current selected object in the
  browser tree. And, not the one, which was got disconnected.
- Disable the auto-collection of data selectively, and only when the
  selected object got disconnected, and not when changing back to the
  Dashboard panel (as per Aditya).
2018-07-27 13:14:24 +05:30
Ashesh Vashi 35862b94a9 We need to remove the interval callbacks for retrieving the statistics
for the charts on dashboard every time the URL changed (not - just when
connection to the server was alive).
2018-07-26 22:44:34 +05:30
Ashesh Vashi e2ce73d855 'anyFamilyMember' runs the condition function for all nodes in the
hierarchy. No need to run the 'dashboardURL' function in the
'getDashboardURL' function for the current node too.
2018-07-26 21:37:40 +05:30
Aditya Toshniwal be3f9570e3 Fixed dashboard reloading even if subnodes under a dashboard or server selected. 2018-07-25 13:11:00 +01:00
Ashesh Vashi 53b5043520 As per Aditya - we need the server version for the certain operations,
which was removed during previous commit.
2018-07-25 13:07:28 +05:30
Ashesh Vashi e12e00703f Refactored the dashboard code, which was allowing each node type to
define its own dashboardURL.

There was a typo, while calling the dashboard function of a Node type.
2018-07-25 12:28:44 +05:30
Aditya Toshniwal f7e43d5e50 Realtime preference handling for the Dashboards and Debugger. Fixes #3294 2018-07-24 16:31:44 +01:00
Dave Page ae814d76d3 Update release notes. 2018-07-23 16:19:19 +01:00
Dave Page d7eb41fff4 Include a cacert file when needed for the upgrade check. Fixes #3185 2018-07-23 16:15:58 +01:00
Dave Page 58ef723476 SESSION_SKIP_PATHS should be set before we load local or distro config files. 2018-07-23 15:44:54 +01:00
Akshay Joshi 213cb440d0 Add support for SCRAM password changes (requires psycopg2 >= 2.8). Fixes #2214 2018-07-23 15:03:44 +01:00
Khushboo Vashi 2d1e835d32 Fix panel errors seen when click on partitions. 2018-07-23 14:33:40 +01:00
Dave Page cb9fffc7de Remove comment that's not really needed any more. 2018-07-20 16:56:03 +01:00
Aditya Toshniwal c353135a3a Add support for INCLUDE columns on indexes and index constraints with PG 11+. Fixes #3462 2018-07-19 13:13:37 +01:00
Dave Page a86604160a Allow the user to specify a fixed port number in the runtime to aid cookie whitelisting etc. Fixes #3506 2018-07-19 12:54:53 +01:00
Dave Page 2ce41e77f2 Add a menu option to the runtime to copy the appserver URL to the clipboard. Fixes #3510 2018-07-19 11:32:40 +01:00
Akshay Joshi 051ce6afeb Ensure the SSH tunnel port number is honoured. Fixes #3471 2018-07-19 10:52:16 +01:00
Akshay Joshi ce768c7f8a Support SSH tunneling with keys that don't have a passphrase. Fixes #3468 2018-07-18 14:15:05 +01:00
Akshay Joshi 7f7feee8c1 Added keyboard shortcut for 'pgAdmin4' menu. 2018-07-17 18:52:06 +05:30
Akshay Joshi 1fc82d328c Fix backup in directory format on Windows. 2018-07-17 13:04:28 +01:00
Akshay Joshi ba8f745f70 Exclude system columns in Import/Export. Fixes #3448 2018-07-17 13:01:40 +01:00
Khushboo Vashi 8869fd6eb3 Fix a number of debugger execution issues. Fixes #3191
1. EPAS packages' function/procedure does not honour INOUT arguments, it converts INOUT to OUT.

2.  Packages' functions and procedures are not getting listed in their respected nodes in some scenarios like procedure having INOUT argument and function with void return type

3. The Reverse engineering SQL is not correct for Packages' functions/procedures

4. In case of INOUT argument, debugger asks for mendatory input which should not.

5. Re-executing a procedure whilst direct debugging doesn't work.
2018-07-17 12:51:24 +01:00
Akshay Joshi 39b41d7b24 Various procedure/function related fixes for EPAS/PG 11. Fixes #3446
- Fix the RM #3446 "plpgsql keyword should displayed in SQL pane for EPAS-11".
- Procedures for EPAS 11 always created as 'edbspl', even though language is sql or plpgsql.
- Not able to create Function/Procedure/Trigger function if the language is "C" for all supported database server.
- Function creation for EPAS 9.6 and above when set "Window?" flag to "Yes".
- Disable Volatility, Strict, Parallel, Estimated cost and Leak prof while creating procedures in EPAS 11 when language is not 'edbspl'.
- Rename "default" folder to "11_plus" inside "pg" directory for procedures, as procedures are supported from PG11 onwards.
- Creating/Deleting parameter in Procedure for PG 11.
- Drop procedures with arguments for PG/EPAS 11.
pg_proc table has added default value 'v' for Volatility, 100 for Cost and 'u' for Parallel for any language. All the three are not supported for Procedures in PG/EPAS 11 (excluding 'edbspl' language for EPAS). Fixed the issue where it is visible in properties panel if we create procedure using language 'plpgsql' or 'sql'.
2018-07-17 12:43:46 +01:00
Dave Page a49923dba2 Add hints for the config options. 2018-07-17 12:18:37 +01:00
Akshay Joshi 765a88addf Support running on systems without a system tray. Fixes #3316 2018-07-17 12:10:35 +01:00
Dave Page 0137cfaee3 Update message catalogs:
1455 of 1984 messages (73%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1910 of 1984 messages (96%) translated in pgadmin/translations/fr/LC_MESSAGES/messages.po
1941 of 1984 messages (97%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1789 of 1984 messages (90%) translated in pgadmin/translations/ko/LC_MESSAGES/messages.po
1785 of 1984 messages (89%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1787 of 1984 messages (90%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1411 of 1984 messages (71%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2018-07-12 10:04:07 +01:00
Ioseph Kim c7325bea93 Add a Korean translation. 2018-07-12 10:02:54 +01:00
Dave Page c6dba67d06 Add "messages" target to extract, update and compile message catalogs for convenience. 2018-07-12 10:00:40 +01:00
Dave Page 0c6e80f64d Improve sizing on Linux 2018-07-11 13:31:19 +01:00
Aditya Toshniwal 2b9c0a63fb Ensure CodeMirror always has a non-zero font size. Fixes #3480 2018-07-10 13:58:44 +01:00
Aditya Toshniwal 3b862bd70b More jQuery 3 updates. 2018-07-10 10:59:53 +01:00
Aditya Toshniwal d1784137a5 Ensure text is visible in the SQL Filter dialogue. Fixes #3478 2018-07-09 14:08:41 +01:00
Aditya Toshniwal 41a8333145 Replace deprecated success, error callbacks in $.ajax call with new functions .done and .fail. 2018-07-09 13:54:00 +01:00
Khushboo Vashi 81312d17e2 Add feature tests for Backup/Restore and Maintenance. Fixes #3206 2018-07-09 11:27:25 +01:00
Akshay Joshi 2b20b387e2 Add support for Trigger and JIT stats in the graphical query plan viewer. Fixes #3397 2018-07-06 13:13:14 +01:00
Aditya Toshniwal 73530c05aa Add missing files related to previous commit: Infrastructure and changes to the Query Tool for realtime preference handling. Refs #3294 2018-07-05 11:41:01 +01:00
Aditya Toshniwal bdb7e3fde2 Infrastructure and changes to the Query Tool for realtime preference handling. Refs #3294
Highlights of this patch include:
- Changes will affect SQL Editors in Create dialog boxes, SQL tab of the main screen, Query tool, History entries in the query tool, Query tool opened in New Tab/Window
- All the components of SQL editor will refer to single source of preferences which is cached in the Browser object. All other redundant ajax get preference calls are removed.
- SQL editor will not refer template JS variables anymore, once all the references are removed the template variables will also be removed.
- Code refactoring wherever possible.
- Covered JS test cases wherever possible.
2018-07-05 11:38:43 +01:00
Aditya Toshniwal 82d77c4608 Don't create a session when the /misc/ping test endpoint is called. Fixes #3371 2018-07-05 11:12:03 +01:00
Dave Page 165c4744b0 Correct the runtime options list. 2018-07-05 09:13:46 +01:00
Dave Page e802f2db64 Correct bug number. 2018-07-02 15:55:57 +01:00
Khushboo Vashi d56f1b17f3 Fix restoring of restore options for sections. Fixes #3362 2018-07-02 15:53:19 +01:00
Khushboo Vashi 28e0220e97 Fix restoring of restore options for sections. Fixes # 2018-07-02 15:52:15 +01:00
Murtuza Zabuawala d53c47e1cf Cleanup and fix handling of Query Tool Cancel button status. Fixes #3319 2018-07-02 15:43:36 +01:00
Murtuza Zabuawala b390c033cf Fix debugging of procedures in EPAS packages. Fixes #3457 2018-06-29 15:20:33 +01:00
Khushboo Vashi fb1ef9ac0b Properly support backups in Directory format. Fixes #3309 2018-06-29 15:14:37 +01:00
Dave Page c85ced4c6b Prep 3.2 release notes page. 2018-06-29 14:37:05 +01:00
Khushboo Vashi 43aa0c9f3c Fix wheel deps 2018-06-28 13:03:24 +01:00
Dave Page fbbf9d1de2 Fix stupid typo 2018-06-28 12:56:33 +01:00
Dave Page 6afaa4f400 Fix bug number, per Khushboo 2018-06-28 11:14:57 +01:00
Dave Page 21fd953672 PEP-8 fix 2018-06-27 16:55:57 +01:00
Shubham Agarwal ec476d6274 Feature test reliability improvements:
1. click_tab() -> Added wait till element is clickable, test cases are failing since the function attempts to click the tab which is not yet in the state to be clicked.

2. add_server() -> Replaced the sleep statement with wait till element to be clickable.
2018-06-27 16:40:03 +01:00
Dave Page ce8fb28b34 Message catalog updates:
1459 of 2000 messages (72%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1930 of 2000 messages (96%) translated in pgadmin/translations/fr/LC_MESSAGES/messages.po
1961 of 2000 messages (98%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1796 of 2000 messages (89%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1798 of 2000 messages (89%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1415 of 2000 messages (70%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2018-06-27 11:48:33 +01:00
Identifier Anonymous 6ca07528ff Japanese translation fixes. 2018-06-27 11:46:39 +01:00
Khushboo Vashi 8136b72364 Fix a French translation error that could prevent the server starting up. Fixes #3411 2018-06-27 11:42:23 +01:00
Dave Page f04b2e33b5 Prep for 3.1 release. 2018-06-26 11:13:46 +01:00
Akshay Joshi 08e4cdf2ac Updated extension upgrade message. Fixes #3445 2018-06-26 11:53:46 +05:30
Dave Page 27bb7ff5db Don't use imple variable notation in bash scripts. 2018-06-25 17:00:21 +01:00
Dave Page 5bdd80e3da Correct version comparison, per Khushboo. 2018-06-25 16:41:34 +01:00
Akshay Joshi cf29e8df90 Require v1.1 of the pldbgapi extension to debug on EPAS 11. 2018-06-25 16:01:53 +01:00
Akshay Joshi 57c054fb0e Fix various Drop menu options that were broken during the treeview refactoring.
Fixes #3442. Fixes #3443. Fixes #3444
2018-06-25 15:52:12 +01:00
Akshay Joshi 4a71c6d7af Various EPAS/PG11 function & procedure fixes. Fixes #3421. Fixes #3422 2018-06-25 14:58:02 +01:00
Akshay Joshi 1f5ca1b540 Allow sorting in the file dialogue. Fixes #3273 2018-06-25 14:41:07 +01:00
Dave Page 4ba0e1a6f3 Fix Python 2.6 support for SQL_ASCII data in the query tool. 2018-06-21 17:06:28 -04:00
Akshay Joshi 560e5f225a Allow dropping of Procedures in PG 11. Fixes #3423 2018-06-21 16:36:10 -04:00
Akshay Joshi 83f9d8a547 Minor fix to handle auto-discovery of servers with no port recorded. 2018-06-21 16:34:33 -04:00
Akshay Joshi 480fe6b9fc Fixed issue of detection of EPAS server 11 and above. Version string is changed in EPAS 11 2018-06-21 18:30:37 +05:30
Dave Page 8480c10c74 Update release notes. 2018-06-21 08:32:15 -04:00
Aditya Toshniwal df85392bbf Fix handling of SQL_ASCII data in the query tool. Fixes #3289. Fixes #3250 2018-06-21 08:26:01 -04:00
Joao Pedro De Almeida Pereira 155f82676d Fix the RE-SQL generation for GreenPlum external tables. Fixes #3431 2018-06-19 20:01:45 -04:00
Akshay Joshi 7a06acb678 Allow the connection timeout to be configured on a per-server basis. Fixes #3388 2018-06-19 19:58:46 -04:00
Dave Page 9821e28da5 Fix file permissions per Devrim 2018-06-19 16:09:49 -04:00
Dave Page 717637c5b9 Fix indent. 2018-06-18 13:47:39 -04:00
Akshay Joshi a45c33cf76 Ensure that template0 and template1 are available as tempates when creating databasesa. Fixes #3361
[regardless of the Show System Objects? option]
2018-06-18 13:41:14 -04:00
Khushboo Vashi 521985c11a README update 2018-06-18 12:51:38 -04:00
Ashesh Vashi f2cef38364 Flask 1.0.2 does not allow a dot (.) in the view_func name, which we use
during generting the routes for the node.

References:
https://github.com/pallets/flask/commit/2f57a0b917478a028859b9d036b59cf1bba6cad2
https://github.com/pallets/flask/issues/2790

Fixes #3360
Reported by: Marcelo Mendes
Investigated by: Khushboo Vashi
2018-06-18 09:58:16 +05:30
Dave Page 5f51c39e6f Delete the venv folder prior to upgrade. Fixes #3384 2018-06-17 21:10:17 -04:00
Khushboo Vashi ba8829b64f Further Python 2.6 fixes. 2018-06-15 15:03:53 +01:00
Khushboo Vashi ab54a6d39a Fix external utilities to run with Python 2.6. 2018-06-15 12:38:31 +01:00
Khushboo Vashi d1902cd639 Add Python API tests for execution of external utilities such as pg_dump. 2018-06-15 11:36:07 +01:00
Akshay Joshi 766b389001 Include the schema name on RE-SQL for packages. Fixes #3356 2018-06-15 10:40:14 +01:00
Akshay Joshi b48145f01f Add an option to auto-complete keywords in upper case. Fixes #2686 2018-06-15 10:18:56 +01:00
Akshay Joshi df7b4d55c6 Remove an extra space in Procedure templates. 2018-06-15 09:16:00 +01:00
Akshay Joshi 1a6b6f61f7 Fix documentation indexing. 2018-06-15 09:14:12 +01:00
Dave Page 96544424dd Don't pipe the list of binaries through uniq.
It seems to be overflowing a buffer and truncating output with Python 3,
plus it's being fed a single line only so isn't actually doing anything.
2018-06-14 17:03:16 +01:00
Dave Page 1d322e2cd9 Enable building of the appbundle with Python 3.6. 2018-06-14 16:16:30 +01:00
Dave Page 087db8a75e Fix stored procedure test cases so they don't fail on EPAS 9.4 2018-06-13 17:01:19 +01:00
Akshay Joshi 88a2309a26 Fix auto-complete. Fixes #3374 2018-06-13 15:53:21 +01:00
Khushboo Vashi d1ecba56b8 Function and procedure support for PG11. Fixes #3362 2018-06-13 15:03:17 +01:00
Joao De Almeida Pereira e5048b4d0b Disable ACLs for the database objects for the Greenplum due to
performance issue.

Reviewed By: Ashesh
Fixes #3415
2018-06-12 10:07:23 +05:30
Murtuza Zabuawala e2b0cf6727 Fix labels and popups on EXPLAIN plan that were broken by the jQuery 3 update. Fixes #3404 2018-06-11 17:03:21 +01:00
Victoria Henry 226c872a84 Avoid an exception on GreenPlum when retrieving RE-SQL on a table. Fixes #3409 2018-06-11 16:56:39 +01:00
Anthony DeBarros a6ee27cf25 s/shutdown/shut down/ 2018-06-08 08:45:02 +01:00
Akshay Joshi 419f9069ae Move the notifications tab between messages and history as it seems more natural there. 2018-06-06 09:23:33 +01:00
Joao De Almeida Pereira 7dd6372eeb Extract the tests and refactor some of the methods.
Extract some of the ACI Tree functionalities, and decouple it from the
main source. Also - create some abstractions from the repeated code
around the enable/disable the schema children object create/edit/delete
functionalities, and also created the dialog wrappers for backup and
restore dialogs.

Reviewed by: Khushboo and Ashesh
Refactored by: Ashesh
2018-06-05 16:42:59 +05:30
Aditya Toshniwal 920934759f Handle a potential error case in the connection status monitoring.
When you disconnect the server with an open sqleditor tab, exception
 occurs at the back end. Also, after connecting server, the sqleditor
 is not able to connect back because of the exception.
2018-06-05 11:57:56 +01:00
Aditya Toshniwal 20ea8a69f5 Fix constraint on servers table in SQLite to allow ports < 1024. Fixes #3307 2018-06-05 10:47:03 +01:00
Dave Page 2860e82c63 Fix Gunicorn binding for IPv4. 2018-05-31 10:57:09 -04:00
Dave Page 6719ff141b Correct package name 2018-05-31 10:49:30 -04:00
Dave Page 4372dd051e Include libffi-devel in the Docker build. 2018-05-31 10:48:32 -04:00
Dave Page 98f84e5f34 Ignore the ycache directory when linting. 2018-05-31 10:34:29 -04:00
Dave Page 985e089c23 Update the release notes. 2018-05-31 10:29:47 -04:00
Dave Page eec9714191 Bind the container server to ipv6 as well as ipv4 ports. Fixes #3392 2018-05-31 10:27:23 -04:00
Murtuza Zabuawala f877de6a1f Fix an issue where a change to any field in server dialog causes the 'tunnel_identity_file' model value to get included unnecessarily in the update request. Fixes #3389 2018-05-31 10:10:43 -04:00
Akshay Joshi 5f0799714d Cleanup Python 3 server startup code. Fixes #3277 2018-05-31 10:07:08 -04:00
Dave Page bc63b278be Remove bug 3357 from the release notes. As it was a fix to a feature that will be in the next release, users will never have seen the bug so we shouldn't list it in the notes. 2018-05-31 07:10:56 -04:00
Akshay Joshi 55232b0944 Fixed ordering of changes in release note and added one missing entry. 2018-05-31 14:51:58 +05:30
Ashesh Vashi 86712b1bd2 Add support for source maps in the karma test framework to aid debugging. 2018-05-30 22:09:00 -04:00
Akshay Joshi 38ee39ae7a Add support for LISTEN/NOTIFY in the query tool. Fixes #3204 2018-05-30 21:58:28 -04:00
Akshay Joshi 2b4605a9d3 Ensure backup/restore/maintenance work via SSH tunnels. Fixes #3355 2018-05-30 21:25:42 -04:00
Dave Page b00931407e Fix failed yarn changes 2018-05-30 16:53:03 -04:00
Dave Page bea176a646 Fix failed yarn changes 2018-05-30 16:52:54 -04:00
Dave Page 6a28b9ff26 Revert failed Yarn changes. 2018-05-30 16:52:37 -04:00
Dave Page 8bda4e0230 Remove duplicate options 2018-05-30 16:48:23 -04:00
Dave Page 189e307671 Fix syntax 2018-05-30 16:42:09 -04:00
Dave Page b2d4c6ef9d Disable emojis in Yarn output. 2018-05-30 16:34:47 -04:00
Akshay Joshi 17977d5d0e Fix dropping of databases over SSH tunneled connections. Fixes #3357 2018-05-28 17:37:24 -04:00
Akshay Joshi 08990cb1de Handle errors properly if they occur when renaming a database. Fixes #3353 2018-05-28 17:35:33 -04:00
Aditya Toshniwal 9f13865777 Update jQuery to 3.3.1. Fixes #3271
Patch by Aditya, with test enhancements from Anthony and Joao at Pivotal.
2018-05-25 16:26:37 +01:00
Dave Page 61d8072a8c Batch, not bash!! Correct the syntax. 2018-05-23 13:09:40 +01:00
Dave Page fa07400fdd Hack to compile PyCrypto with VC++ 2018-05-23 13:04:58 +01:00
Dave Page dab5d94b7c Fix PyCrypto if using Python 3. 2018-05-23 10:00:46 +01:00
Dave Page 2c6938491e Add missing . 2018-05-23 08:48:26 +01:00
Dave Page fa57c02d0e Add some more missing CALL statements 2018-05-22 16:35:55 +01:00
Dave Page 83bee60fa4 CALL all external programs, or labels cannot be found. 2018-05-22 16:16:30 +01:00
Dave Page 81a5e1ffd3 Minor fixes 2018-05-22 15:41:10 +01:00
Dave Page 0b5912b09c Handle dependencies that may or may not be present. 2018-05-22 14:40:44 +01:00
Dave Page 5780719035 There's no need to activate/deactivate/activate the venv. 2018-05-22 14:01:13 +01:00
Dave Page f0f530e824 Returning %ERRORLEVEL% is proving unreliable. Just return 1 instead if there's an error. 2018-05-22 13:39:03 +01:00
Dave Page 0bf89f3dc0 Need to CALL Yarn. 2018-05-21 15:34:08 +01:00
Dave Page d5e48ecdc2 Further windows make script cleanup. 2018-05-21 15:06:14 +01:00
Dave Page 066a59d89c Don't barf on nested parentheses as we may find on 64 bit systems. 2018-05-21 12:54:19 +01:00
Dave Page e1a3caa780 Major cleanup of the Windows installer build script. 2018-05-18 13:27:57 +01:00
Aditya Toshniwal 6492dacbb2 Ensure the debugger container has focus when loaded. Fixes #3295 - this time on Firefox too! 2018-05-18 11:33:42 +01:00
Aditya Toshniwal a4ed9d6976 Allow connections to servers with port numbers < 1024 which may be seen in container environments. Fixes #3307 2018-05-18 11:12:38 +01:00
Akshay Joshi 28126a0a0d Fixed pep8 issue for last commit. 2018-05-18 11:30:40 +05:30
Akshay Joshi fb0c322ccf Correct the logic to set the SUPPORT_SSH_TUNNEL flag, if the flag is set the False in local config file, then we should not override it. 2018-05-18 11:26:11 +05:30
Akshay Joshi 719938a14c Fixed issue where 'Identity file' control of SSH Tunnel tab is enabled when database is connected and 'Use SSH tunneling' flag is set to No. 2018-05-17 17:18:00 +05:30
Anthony Emengo a7ee85619d Using the '.eslintignore' config file for excluding the temporary,
vendor specific, and templates files, instead of writing our own logic
to do so.

Patch by: Anthony & Joao
Reviewed by: Khushboo
2018-05-17 11:34:04 +05:30
Dave Page bd356ff9fa Fix a couple of find/replace errors. 2018-05-16 16:35:23 +01:00
Dave Page 765e0d03be Further cleanup of the environment setup 2018-05-16 16:31:41 +01:00
Dave Page 76749efb12 Further cleanup of the environment setup 2018-05-16 16:26:00 +01:00
Dave Page 9f8f1e8972 Rough cleanup of the environment setup 2018-05-16 16:15:44 +01:00
Dave Page 6d33542b24 PGDIR isn't needed in the path and we shouldn't have random Mingw paths hard-coded. 2018-05-16 14:39:58 +01:00
Dave Page ae03b7c226 PYTHON_VERSION is set automatically. Use it to conditionally fix the backports module. 2018-05-16 14:28:15 +01:00
Dave Page 246c434b61 No need to define PGADMIN4_USE_WEBKIT any more. 2018-05-16 13:33:53 +01:00
Dave Page 4496a97a97 Assume Yarn and Node are always in the path 2018-05-16 11:58:57 +01:00
Dave Page 7a1d9c750a Use VCINSTALLDIR instead of VCDIR, as that is set by Visual Studio 2018-05-16 11:56:30 +01:00
Akshay Joshi ccf58570b1 Support running feature tests against Firefox. Fixes #3270 2018-05-15 15:10:11 +01:00
Dave Page 8d9e9eab13 Allow "make" to be overridden in the environment. 2018-05-14 17:08:40 +01:00
Dave Page fe81ae3285 Correct error message 2018-05-14 16:16:18 +01:00
Anthony Emengo ab27b9d118 Fix template handling in tests for Windows. 2018-05-14 15:47:38 +01:00
Joao De Almeida Pereira bc4d16eb83 Initial version of the new tree implementation.
This is the first version of our Tree implementation. At this point is a
very simple tree without no abstractions and with code that eventually
is not very performant, but this is only the first iteration and we are
trying to follow the 'Last Responsible Moment Principle' [1].

Implemention details:
- Creation of PGBrowser.treeMenu
- Initial version of the Tree Adaptor 'pgadmin/static/js/tree/tree.js'
- TreeFake test double that can replace the Tree for testing purposes
- Tests, As an interesting asside because Fake’s need to behave like
  the real object you will noticed that there are tests for this type
  of double and they the same as of the real object.

[1] https://medium.com/@aidanjcasey/guiding-principles-for-an-evolutionary-software-architecture-b6dc2cb24680

Patched by: Victoria && Joao
Reviewed by: Khushboo & Ashesh
2018-05-14 18:00:23 +05:30
Aditya Toshniwal a34b3f27d4 Fix webpack config regexps to be more Windows-friendly. 2018-05-11 10:23:37 +01:00
Akshay Joshi 252a9b265b Ensure server cleanup on exit only happens if the server actually started up. Fixes #3277 2018-05-11 09:33:09 +01:00
Murtuza Zabuawala e17b62c055 Using the latest version (v2.3.0) of jquery.event.drop. 2018-05-10 13:26:10 +05:30
Ashesh Vashi ccdc1a6c74 Revert back to jquery version 1.12.4 until we fix the jasmine testsuite, which is failing with jQuery (v3.0+) 2018-05-10 13:24:42 +05:30
Murtuza Zabuawala a02a4eb51a Using the latest version (v2.3.0) of jquery.event.drag to fix the
jasmine testsuite.
2018-05-10 12:24:54 +05:30
Joao De Almeida Pereira b8f49daeb8 Change the order of the shims in the shims file.
Patch by: Victoria && Joao
Reviweb by: Khushboo
2018-05-10 12:06:43 +05:30
Ashesh Vashi b8d0db7e7a Using the 'webcabin-docker' from new repository, which contains fixed
for supporting jQuery 3.0+.

Also - updated the jquery version to '^3.0'.
2018-05-10 12:02:33 +05:30
Dave Page 26ae8318f2 Release notes update. 2018-05-09 14:28:15 +01:00
Khushboo Vashi ba23ba9b8b Ensure the debugger container has focus when loaded. Fixes #3295 2018-05-09 14:26:50 +01:00
Dave Page 0ffd3d0451 Update release notes 2018-05-09 14:06:17 +01:00
Murtuza Zabuawala a68dac97c4 Set SESSION_COOKIE_SAMESITE='Lax' per Flask recommendation to prevents sending cookies with CSRF-prone requests from external sites, such as submitting a form. Fixes #3342 2018-05-09 14:04:50 +01:00
Aditya Toshniwal 5b86a67a41 Fixed query tool keyboard issue where arrow keys were not behaving as expected for execute options dropdown. Fixes #3298 2018-05-09 13:05:22 +05:30
Dave Page 5960644bae Fix ordering of changes in release notes. 2018-05-08 11:04:53 +01:00
Akshay Joshi 39ea7c2916 Updated release note for 3.1 2018-05-08 14:38:51 +05:30
Dave Page c68848e7f3 Ensure the runtime core application is setup before trying to access any settings. Fixes #3333 2018-05-08 09:54:33 +01:00
Khushboo Vashi 3ac3e73daf Fixed layout of the alertify error message in the query tool. Fixes #3310 2018-05-07 16:04:47 +05:30
Khushboo Vashi 567f764234 Backup, Maintenance and Restore should not be started if database name contains "=" symbol. Fixes #1220 #1221 2018-05-07 15:09:12 +05:30
Dave Page 8937375885 Standardise the error handling for parsing of JSON response messages from the server. Fixes #3238 2018-05-04 16:56:15 +01:00
Dave Page 4f79f00d61 One day I'll remember to update the version everywhere... 2018-05-04 14:13:57 +01:00
Dave Page 554a199fd2 Bump version to avoid confusion 2018-05-04 13:52:24 +01:00
Akshay Joshi b7fb01ab04 Add support for SSH tunneled connections. Fixes #1447 2018-05-04 11:27:27 +01:00
Murtuza Zabuawala 455c45ea85 Update chromedriver version to support Chrome 66. 2018-05-04 10:20:14 +01:00
Anthony Emengo 3ff56b2d49 Scroll cells into the viewport if needed during the CheckForViewData feature test. 2018-05-04 10:15:02 +01:00
Anthony Emengo 56658a9f8e Fix the template loader to work reliably under Windows (fixing external tables under Greenplum). Fixes #3324 2018-05-03 15:54:15 +01:00
Dave Page 59d8f6fb84 Allow feature tests to run in Chrome headless mode. 2018-05-02 16:51:17 +01:00
Dave Page f0b6fb0e5d Python 3 fixes 2018-05-02 12:05:17 +01:00
Khushboo Vashi 732d8d903d F5 key should work to refresh Browser tree. Fixes #3284
Refactoring by:  Joao Pedro De Almeida Pereira
2018-05-02 11:43:42 +05:30
Dave Page c2122fbfb9 Fix mis-edit. 2018-04-30 17:15:44 +01:00
Dave Page ae1b2149a1 HAve the clean target zap any generated JS or CSS. Fixes #3134 2018-04-30 16:13:51 +01:00
Ashesh Vashi c94439bf8e Fixed the issues for all the javascript files reported by the liner. 2018-04-30 17:51:57 +05:30
Joao De Almeida Pereira 31e73f4096 Ensure the JS-linter is running on all the tests files. 2018-04-30 17:50:51 +05:30
Dave Page 92ba055d66 Fix compiler warning. 2018-04-27 13:27:37 +01:00
Joao Pedro De Almeida Pereira 201f6d359f Cleanup some old code that was failing CI. 2018-04-26 16:21:46 +01:00
Joao De Almeida Pereira 966279c1b3 Fixed issue where icon for Partitioned tables was the same as Non Partitioned tables for GreenPlum database. Fixes #3308 2018-04-26 17:05:56 +05:30
Joao De Almeida Pereira 2ace6a60f3 Fixed display SQL of table with index for GreenPlum database. Fixes #3306 2018-04-25 12:36:41 +05:30
Ashesh Vashi b653b742ed Close button added to the alertify message box, which pops up in case of backend error. Fixes #3290 2018-04-24 18:57:31 +05:30
Dave Page eb35629712 Another attempt at making the JA translation work properly. Gettext really doesn't seem to like percentage signs. Fixes #3303 2018-04-20 09:46:50 +01:00
Taiki Terauchi 51cc7c1e33 Fix an error in the Japanese translation that caused a startup failure. Fixes #3303 2018-04-20 09:12:03 +01:00
Dave Page 3ecfabfde5 Fix python wheel dependencies. 2018-04-19 17:08:06 +01:00
Dave Page 71620dc26e This time, properly fix Alertify version requirement which inadvertently got bumped. 2018-04-18 09:23:16 +01:00
Dave Page dea7491df6 Fix Alertify version requirement which inadvertently got bumped. 2018-04-18 09:09:28 +01:00
Dave Page 8f90b801bd Fix typo 2018-04-17 09:15:17 +01:00
Dave Page bb49d69293 Add required HTMLmin version - the Flask-htmlmin package doesn't seem to pull in the right version. 2018-04-17 08:58:47 +01:00
Identifier Anonymous 0493b86d4d Update Japanese translation. 2018-04-16 15:38:39 +01:00
Aditya Toshniwal d5fdd32971 Fix an error generating SQL for trigger functions. Fixes #3179 2018-04-12 14:10:35 +01:00
Murtuza Zabuawala c08adb5567 Catch errors when trying to EXPLAIN an invalid query. Fixes #3257 2018-04-12 10:50:57 +01:00
Murtuza Zabuawala 79edf40141 Fix password encryption/decryption on Python 3. 2018-04-11 13:45:59 +01:00
Akshay Joshi 8232f26882 Avoid a crash in the runtime if there are spaces in the users username. Fixes #3227 2018-04-11 13:34:21 +01:00
Rahul Soshte e467ffcfe4 Add a couple of files for git to ignore. 2018-04-11 09:58:44 +01:00
Dave Page 163cadc279 Revert "Fix non-ASCII password decryption/encryption under Python 3"
This reverts commit d0a640442c.

Seems to anger Python 2.7
2018-04-10 17:12:14 +01:00
Murtuza Zabuawala d0a640442c Fix non-ASCII password decryption/encryption under Python 3 2018-04-10 16:50:43 +01:00
Dave Page be2ac25fed Cleanup node modules when cleaning 2018-04-10 11:15:57 +01:00
Murtuza Zabuawala f5e474e4ec Ensure the query tool will open properly under MS Edge. 2018-04-10 11:09:59 +01:00
Dave Page 97cf58fdc8 Only avoid pre-built binaries for psycopg2 when building the Mac package, as some others (e.g. pbr) don't like being forced to source builds at the moment. 2018-04-10 09:29:40 +01:00
Dave Page 051fd645d7 Don't use pycryptodome at the moment, as it doesn't play well on Windows. 2018-04-10 09:27:59 +01:00
Dave Page 9464e04cf8 Ignore generated file 2018-04-09 16:31:29 +01:00
Dave Page 9b115c5e46 Message catalog update 2018-04-06 14:59:51 +01:00
Murtuza Zabuawala 78c3db6fc9 Update filter dialogue Javascript to use ES6. 2018-04-06 10:38:04 +01:00
Dave Page a97e4c76e4 Update developer docs to note that ES6 should be used and tests should be included. 2018-04-06 10:06:35 +01:00
Murtuza Zabuawala 8ec51412c3 Add a (configurable) limit to the number of pgAgent job history rows displayed on the statistics tab. Fixes #3072 2018-04-06 10:00:25 +01:00
Murtuza Zabuawala fa1854bd85 Allow sorting when viewing/editing data. Fixes #1894 2018-04-05 16:25:17 +01:00
Neel Patel 659390493d Ensure Alertify dialogues are modal to prevent them being closed by mis-click. Fixes #3248 2018-04-05 11:28:18 +01:00
Максим Кольцов 05e2e3cb39 Update container build to use Alpine Linux and Gunicorn instead of CentOS and Apache. Fixes #3246
This results in a much more slim-line container, requiring fewer resources to run.
In addition, the majority of the build is now done using the Docker infrastructure, allowing for quicker rebuilds and better use of layers.
2018-04-04 16:18:17 +01:00
Dave Page 1617d003cd Cleanup some duplication in the requirements. 2018-04-04 14:17:47 +01:00
Murtuza Zabuawala a95775ae49 Another attempt to fix the Python 2.6 deps. 2018-04-04 13:42:38 +01:00
Dave Page 33890da57e Typo fix. 2018-04-04 13:16:19 +01:00
Murtuza Zabuawala c0cfc9f29b SQLAlchemy stopped supporting Python 2.6. 2018-04-04 12:59:05 +01:00
Murtuza Zabuawala b7c86da586 Fix requirements for Python 2.6. 2018-04-04 12:26:44 +01:00
Murtuza Zabuawala a705fb46a8 Refactor and simplify query tool connection error handling code. Fixes #3235 2018-04-04 11:20:36 +01:00
Murtuza Zabuawala be055ce57d Update Python and JS modules. Fixes #3154 2018-04-04 10:47:01 +01:00
Khushboo Vashi fc886cf8bb Update screenshot. 2018-04-04 10:05:07 +01:00
Khushboo Vashi 7805170783 Add the ability to enable/disable UI animations. Fixes #1978 2018-04-03 14:52:13 +01:00
Joao Pedro De Almeida Pereira 94e1e46201 Show more granular timing info in the query tool history panel. Fixes #3244 2018-04-03 14:11:11 +01:00
Akshay Joshi 61eb94a23c Fix index node display on PG 10. Fixes #3180 2018-03-29 15:09:29 +02:00
Akshay Joshi 1baddd5e9a Decode the severity field in database exception objects properly. Fixes #3090 2018-03-26 13:59:49 +01:00
Khushboo Vashi 413709fc78 Simplify cookie domain/path settings, per discussion. Instead of trying to be smart, just let the user specify them in the config, e.g.
COOKIE_DEFAULT_DOMAIN = None
SESSION_COOKIE_DOMAIN = None
2018-03-23 10:14:02 +00:00
Aditya Toshniwal 1f84285d99 Move the field error indicators in front of the affected fields so they don't obscure spinners or drop downs etc. Fixes #3226 2018-03-23 09:57:37 +00:00
Dave Page d5ebf6777a Fix target dependency per Rahul Soshte. 2018-03-22 13:47:26 +00:00
Rahul Soshte 6d7f795260 Enable building of the runtime from the top level Makefile. Fixes #1305 2018-03-22 11:19:42 +00:00
Dave Page 60c44e8f79 Fix issue seen with older versions of GCC. 2018-03-21 14:49:39 +00:00
Dave Page 80b29a85cc Secure runtime temp files. 2018-03-21 11:27:59 +00:00
Dave Page 6668d5eb93 Bump version for release. 2018-03-21 10:48:52 +00:00
Akshay Joshi 637f3b9d1a Fix a number of broken connection detection scenarios. 2018-03-21 08:38:18 +00:00
Karen Blatchley d358369ed5 Add some missing items to the release notes. 2018-03-20 14:46:49 +00:00
Dave Page c8b456d464 PEP8 fixes 2018-03-20 14:02:56 +00:00
Khushboo Vashi 4942c938ac Fix an error on exit caused by the cookie path patch. 2018-03-20 13:55:06 +00:00
Karen Blatchley 3bd9bdad61 3.0 release notes 2018-03-20 13:48:37 +00:00
Joao Pedro De Almeida Pereira 35b0ab2fe1 Update Karma to 2.0 with plugins. Fixes #3222 2018-03-20 09:31:38 +00:00
Khushboo Vashi 534f1f35fe Appropriately set the cookie path. Fixes #3197 2018-03-19 17:09:19 +00:00
Murtuza Zabuawala 2abff8f5d4 Use a common function for sever setup in the testsuite. 2018-03-19 13:23:29 +00:00
Murtuza Zabuawala 34f1ebc88e Ensure the host parameter is correctly pickup up from the service file. Fixes #3200 2018-03-19 12:38:44 +00:00
Fred Escallier 60893bcdd1 French translation update. 2018-03-19 11:22:47 +00:00
Murtuza Zabuawala c312b03f6f Pass the service name to external processes. Fixes #3195 2018-03-19 11:01:04 +00:00
Murtuza Zabuawala 9ea118ca57 Ensure the file manager properly escapes file & directory names. Fixes #3196 2018-03-19 10:58:12 +00:00
Murtuza Zabuawala 48319d56df Update required ChromeDriver version for current versions of Chrome. Fixes #3219
This requires an update to build/test envs:

pip uninstall chromedriver_installer
pip install -r regression/requirements.txt
2018-03-19 10:05:41 +00:00
Dave Page 93d44d5643 Revert "Ensure the cookie domain and path are properly set. Fixes #3197"
This reverts commit 9c4edb4a28.

Jenkins really doesn't like this.
2018-03-15 14:54:14 -04:00
Khushboo Vashi 9c4edb4a28 Ensure the cookie domain and path are properly set. Fixes #3197 2018-03-15 13:59:29 -04:00
Khushboo Vashi 63ba3402e8 Ensure SSL options are pushed down to external tools like pg_dump. Fixes #3122 2018-03-15 07:35:47 -04:00
Dave Page 53ae960aeb Ignore config_local.py and config_distro.py when running PEP-8 checks. 2018-03-15 07:10:01 -04:00
Dave Page 010ee626bc Update message catalogs. Current status:
1469 of 1956 messages (75%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1842 of 1956 messages (94%) translated in pgadmin/translations/fr/LC_MESSAGES/messages.po
1679 of 1956 messages (85%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1812 of 1956 messages (92%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1814 of 1956 messages (92%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1424 of 1956 messages (72%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2018-03-15 07:01:34 -04:00
Fred Escallier 6c59563afa Add a French translation. Fixes #3184 2018-03-15 06:58:39 -04:00
Dave Page 1e303dafdd Exit CI run if the PEP-8 checks fail. 2018-03-15 06:53:34 -04:00
Murtuza Zabuawala faf243db71 Fixed PEP8 issue 2018-03-15 16:13:11 +05:30
Maxim Zakharov 54b1a79cb6 Sporadically crashes on Windows when exit. Fixes #3177
1) Shutdown the python server properly.
  2) Disabled "Shutdown server" menu till server is not successfully started.

Initial patch sent by Maxim, modified by Akshay Joshi.
2018-03-15 13:26:24 +05:30
Joao Pedro De Almeida Pereira 3c4359270e Fix trim function which was causing some JS errors during Server Properties validation. Victoria & Joao 2018-03-14 17:58:01 -04:00
Dave Page 3c686d3fbe PEP-8 fixes 2018-03-13 17:30:07 -04:00
Khushboo Vashi 802269910c Fix unicode handling in the external process tools and show the complete command in the process viewer. Fixes #2963. Fixes #3157. 2018-03-13 16:45:20 -04:00
Joao Pedro De Almeida Pereira 876ce1799a Skip tests where appropriate on GPDB. Fixes #3190
Victoria & Joao @ Pivotal.
2018-03-13 15:32:35 -04:00
Victoria Henry 6b03cb78af Refactor server dialogue validation for better unit testing.
Victoria & Joao @ Pivotal.
2018-03-13 14:47:32 -04:00
Dave Page 156b308fd3 Fix template paths for Windows. Fixes #3139
Joint work from Joao and Murtuza.
2018-03-13 12:45:14 -04:00
Dave Page 9365ab62fe Revert "Fix template path generation for Windows. Fixes #3139"
This reverts commit 695d4e648c.

It's borked!
2018-03-13 08:49:34 -04:00
Murtuza Zabuawala 695d4e648c Fix template path generation for Windows. Fixes #3139 2018-03-13 07:55:37 -04:00
Murtuza Zabuawala 03b772bf64 Add support for connecting using pg_service.conf files. Fixes #3140 2018-03-12 16:45:56 -04:00
Murtuza Zabuawala 985a004766 Fix SQL generated when dropping NOT NULL from a "char" column. Fixes #2989 2018-03-09 15:23:49 +00:00
Joao Pedro De Almeida Pereira 83477224cb Use test methods with @patch rather than directly. 2018-03-09 13:25:35 +00:00
Khushboo Vashi 0283f68d7f Minor formatting fix 2018-03-08 11:07:05 +00:00
Khushboo Vashi 7796a47b12 Fix test case for Python 2. 2018-03-08 10:21:24 +00:00
Dave Page e577859ed2 Always run PEP-8 checks! 2018-03-08 09:34:06 +00:00
Joao Pedro De Almeida Pereira 3a6994f719 Final PEP-8 fixes 2018-03-08 09:33:43 +00:00
Khushboo Vashi f86c313c18 More hardening of the query tool tests. 2018-03-08 09:12:48 +00:00
Khushboo Vashi 1136e37cf0 Make the poll query test a little more robust. 2018-03-07 16:48:32 +00:00
Murtuza Zabuawala abf0b1a7ae Allow admins to disable the use of Gravatar if they choose. Fixes #3037 2018-03-07 16:35:33 +00:00
Khushboo Vashi ae5c13188d Insert rows correctly when a table has OIDs and a Primary Key in uppercase. Fixes #3135 2018-03-07 16:06:23 +00:00
Joao Pedro De Almeida Pereira e7316e2181 Update Jasmine to v3. Fixes #3182 2018-03-07 16:01:04 +00:00
Khushboo Vashi d3c303e455 Ensure all messages are retrieved from the server in the Query Tool. Fixes #3094 2018-03-07 13:38:27 +00:00
Joao Pedro De Almeida Pereira d1ab47c10c Disable function statistics on Greenplum. Fixes #3176 2018-03-07 11:52:02 +00:00
Murtuza Zabuawala 06ff05762e PEP8 fixes. Fixes #3175 2018-03-07 11:47:01 +00:00
Joao Pedro De Almeida Pereira 427314cfdf Support for external tables in GPDB. Fixes #3168 2018-03-02 16:49:25 +00:00
Murtuza Zabuawala 92a0bb605d Ensure we can edit grid values in the debugger using keyboard shortcuts. Fixes #3153 2018-03-02 15:05:04 +00:00
Murtuza Zabuawala efcf87636d Fix typo/thinko in access key definition. 2018-03-02 14:49:06 +00:00
Khushboo Vashi 905cdafe90 PEP8 changes for the FDW modules. 2018-03-02 14:46:13 +00:00
Neethu Mariya Joy 0c48b79ce7 Allow copying of SQL from the dashboard tables. Fixes #3137 2018-03-02 14:39:12 +00:00
Neethu Mariya Joy 7471dea458 Allow text selection/copying from disabled CodeMirror instances. Fixes #2309 2018-03-02 13:46:06 +00:00
Dave Page 4d072ff781 Undo previous thinko - there's already a check-pep8 target. D'oh. 2018-03-02 13:43:42 +00:00
Murtuza Zabuawala da7f088508 Handle opening of non-UTF8 compatible files. Fixes #3129 2018-03-02 13:36:50 +00:00
Dave Page 803eadd5a1 Stupid Makefile syntax 2018-03-02 12:35:12 +00:00
Dave Page 31f50634c7 Add a makefile target for running PEP8 checks. 2018-03-02 12:01:55 +00:00
Murtuza Zabuawala 8964e511bf PEP8 fixes for the Casts, Event triggers, Extensions and Languages modules. Fixes #3161 2018-03-02 11:59:11 +00:00
Harshal Dhumal 7cdb489a47 Fix handling of tie/datetime array types when adding columns to a table. Fixes #3079 2018-03-02 11:51:53 +00:00
Murtuza Zabuawala 78e2ff4f56 Ensure the pgAgent job start/end time grid fields synchronise with the subnode control and validate correctly. Fixes #3073 2018-03-02 11:11:26 +00:00
Khushboo Vashi a4124c2496 PEP8 fixes. 2018-03-02 09:37:11 +00:00
Murtuza Zabuawala cca6504d54 PEP8 fixes. Fixes #3156 2018-02-27 15:38:50 +00:00
Murtuza Zabuawala f5afd5fdb4 Fix block indent/outdent with configurable width. Fixes #3002 2018-02-27 15:20:30 +00:00
Murtuza Zabuawala a9de043fef Add keyboard shortcuts for the Query Tool. Fixes #2900 2018-02-27 14:32:03 +00:00
Harshal Dhumal 055f7abc9e PEP8 fixes for the server and server group modules. 2018-02-27 11:22:14 +00:00
Harshal Dhumal aa1849c13a Support tab navigation in dialogs. Fixes #2898 2018-02-27 11:18:36 +00:00
Joao Pedro De Almeida Pereira 3be22383b8 Fix function reserve SQL for GPDB. Fixes #3150 2018-02-27 11:05:15 +00:00
Dave Page 7dbfd23797 Case sensitive paths are confusing git... 2018-02-27 11:04:34 +00:00
Murtuza Zabuawala 6753cd7334 PEP8 fixes for the pgAgent and Tables nodes (and subnodes). Fixes #3148 2018-02-26 19:24:17 +00:00
Dave Page bcdb8eb275 Revert "Ensure we pick up the messages from the current query and not a previous one. Fixes #3094"
This reverts commit 08b3ccc01a.
It was found that this fix inadvertently re-introduces #1523
2018-02-26 16:32:53 +00:00
Harshal Dhumal 43d3e0ca64 PEP8 fixes. 2018-02-26 15:58:48 +00:00
Chethana Kumar 51811a451d Update dashboard display options screenshots. 2018-02-26 15:50:39 +00:00
Khushboo Vashi 08b3ccc01a Ensure we pick up the messages from the current query and not a previous one. Fixes #3094 2018-02-26 14:19:43 +00:00
Murtuza Zabuawala fa9aebadbd PEP8 fixes. 2018-02-26 13:54:58 +00:00
Joao Pedro De Almeida Pereira 5ebd9ee8d3 Fix table statistics for Greenplum. Fixes #3059 2018-02-26 09:38:00 +00:00
Murtuza Zabuawala 801a2084e9 Allow dashboard tables and charts to be enabled/disabled. Fixes #2951 2018-02-26 09:20:04 +00:00
Murtuza Zabuawala 54dd6aae83 Add a test for sequence validation. 2018-02-23 12:02:57 +00:00
Joao Pedro De Almeida Pereira 2332630af8 PEP8 fixes for the tools module. 2018-02-23 11:57:44 +00:00
Khushboo Vashi 5a49fbd11f Don't use the webpack cache with production builds. 2018-02-22 17:30:14 +00:00
Murtuza Zabuawala 55875f0cfa PEP8 cleanups for the sequences module. 2018-02-21 17:37:34 +00:00
Murtuza Zabuawala 51cc04b5b0 Fix tablespace tests for Python 3.x. Fixes #3138 2018-02-21 17:34:18 +00:00
Murtuza Zabuawala f8771d5585 Fix validation of sequence parameters. Fixes #3014 2018-02-21 17:32:04 +00:00
Khushboo Vashi b49d625c2d Don't depend on standards_conforming_strings being enabled. Fixes #3077 2018-02-21 17:18:00 +00:00
Joao Pedro De Almeida Pereira ba70634e5f Hide tablespace node on GPDB. Fixes #3107 2018-02-20 17:40:56 +00:00
Joao Pedro De Almeida Pereira bcb6f37d6f Clarify which shortcut is being tested in the shortcut test. 2018-02-20 17:32:37 +00:00
Harshal Dhumal 05e91044c7 Fix intermittent specified_version_number ValueError issue on restart. Fixes #2983
Now we try to restore server details like server version number at restart so template paths can be resolved.
2018-02-20 17:31:13 +00:00
Harshal Dhumal c91a597df9 Fix alignment issues in keyboard shortcut options. Fixes #3080 2018-02-20 16:49:59 +00:00
Khushboo Vashi 9a498c2877 Ensure column names on indexes on views are properly quoted in RE-SQL. Fixes #3066 2018-02-20 16:47:33 +00:00
Dave Page 3021060a32 Fix silly typo 2018-02-20 10:58:03 +00:00
Dave Page 8148a61279 Attempt to ensure the runtime is built with the correct Python version. 2018-02-20 10:44:01 +00:00
Dave Page 8a56eb9cd0 Fix stupid thinko 2018-02-19 17:06:01 +00:00
Dave Page df667bff53 Python 3 fix for the runtime. 2018-02-19 16:30:43 +00:00
Khushboo Vashi c85e14dc25 Add missing reverse-engineered SQL header and drop statement for sequences. Fixes #3081 2018-02-19 11:41:19 +00:00
Murtuza Zabuawala 96165044ae Ensure we can properly update rows with upper-case primary key columns. Fixes #3105 2018-02-19 11:37:31 +00:00
Murtuza Zabuawala 4dc9fb146a Add a marker (/*pga4dash*/) to the dashboard queries to allow them to be more easily filtered from server logs. Fixes #2950 2018-02-19 11:17:42 +00:00
Murtuza Zabuawala 7301e30ff3 Fix PEP8 issues in various modules. Fixes #3121 2018-02-19 11:12:35 +00:00
Murtuza Zabuawala 30868614ff Show button shortcut keys in the debugger on tooltips. 2018-02-19 11:05:34 +00:00
Joao Pedro De Almeida Pereira 0677ad254a Un-vendorise React, now that it contains bug fixes we need. 2018-02-19 10:53:54 +00:00
Joao Pedro De Almeida Pereira 15862e903a Fix creation of tables and columns in GPDB. Fixes #3099 2018-02-19 10:40:10 +00:00
Murtuza Zabuawala 1a958a3951 Fix Python 2.6 support. 2018-02-19 10:22:23 +00:00
Dave Page d5aeb8a691 Fix target name 2018-02-19 09:17:26 +00:00
Joao Pedro De Almeida Pereira 9c382e4d23 Fix tests for Python 3.x 2018-02-09 14:39:39 +00:00
Murtuza Zabuawala 6f25f4d175 Fix PEP-8 issues in feature_tests, dashboard, about and misc module's python code. Fixes #3082 2018-02-09 12:57:37 +00:00
Murtuza Zabuawala 942ac733a4 Configurable shortcuts in the Debugger. Fixes #2901 2018-02-09 12:43:27 +00:00
Khushboo Vashi 258b064963 Add configurable shortcut keys for various common options in the main window. Fixes #2899 2018-02-09 12:07:57 +00:00
Joao Pedro De Almeida Pereira e16a952753 Support EXPLAIN on Greenplum. Fixes #3097
- Extract SQLEditor.execute and SQLEditor._poll into their own files and add test around them
 - Extract SQLEditor backend functions that start executing query to their own files and add tests around it
 - Move the Explain SQL from the front-end and now pass the Explain plan parameters as a JSON object in the start query call.
 - Extract the compile_template_name into a function that can be used by the different places that try to select the version of the template and the server type
2018-02-09 11:54:42 +00:00
Joao Pedro De Almeida Pereira e60a84c44f Update JS packages:
Add package:
     is-docker to select a specific setting when running the Chrome tests in Docker

Upgrade the version of:
    - babel-loader
    - extract-text-webpack-plugin
    - jasmine-core
    - jasmine-enzyme
    - moment
2018-02-09 11:09:04 +00:00
Navnath Gadakh db92907fe9 Fix quoting of function names in RE-SQL. Fixes #3060 2018-02-09 10:15:41 +00:00
Dave Page 2706d9cd8e Bump the version to 3.0, per discussion on the mailing lists 2018-02-05 15:38:20 +00:00
Dave Page 7192a2b675 Rewrite the runtime as a tray-based server which can launch a web browser. Fixes #3086 2018-02-05 15:32:14 +00:00
Murtuza Zabuawala 25647c16ba Ensure we capture notices raised by queries. Fixes #3027 2018-02-02 15:23:33 +01:00
Dave Page 4d69764869 Don't quote variable values used by SET. It's usually going to be wrong. Fixes #3027 2018-02-02 14:58:29 +01:00
Khushboo Vashi 262d01bf01 Add keyboard navigation options for the main browser windows. Fixes #2895 2018-02-02 14:28:37 +01:00
Harshal Dhumal 2042f89ce0 Don't include sizes on primitive datatypes that shouldn't have them when modifying columns. Fixes #3052 2018-02-01 16:27:36 +01:00
Murtuza Zabuawala 6ad44cb51e Fix on-click handling of treeview nodes that wasn't refreshing SQL/Dependencies/Dependents in some circumstances. Fixes #3058 2018-02-01 14:44:12 +01:00
Harshal Dhumal e0da9c5a0c Significantly improve connection loss detection and handling in the query tool. Fixes #2815 2018-02-01 14:29:18 +01:00
Murtuza Zabuawala c3ddb7df38 PEP8 fixes for the utils module. Fixes #3076 2018-01-31 13:58:55 +00:00
Murtuza Zabuawala c6e405ce72 Prevent the filter dialog CodeMirror from overflowing onto the button bar of the dialog. Fixes #3067 2018-01-31 10:12:04 +00:00
Dave Page d8bd6ea885 Mask email addresses 2018-01-30 17:00:12 +00:00
Murtuza Zabuawala bc836aa374 Ensure the user can use keyboard shortcuts after using button controls such as Cancel, Open and Save. Fixes #3054 2018-01-29 13:43:35 +00:00
Murtuza Zabuawala 489349b4e9 Add tools for checking PEP8 compliance. Fixes #3063 2018-01-29 12:45:32 +00:00
Murtuza Zabuawala 393ce53d2d Fix PEP8 issues in the Tools module. Fixes #3063 2018-01-26 16:54:21 +00:00
Joao Pedro De Almeida Pereira de1c767e88 Update the regression tests to fix issues with Python 3.5 and PG 9.2. Fixes #3057 2018-01-26 16:45:09 +00:00
Murtuza Zabuawala abcb8c36a3 Fix connection status indicator on IE/FF. Fixes #3046 2018-01-25 13:30:13 +00:00
Harshal Dhumal 66341e6947 Add infrastructure for managing configurable keyboard shortcuts. 2018-01-25 12:49:06 +00:00
Joao Pedro De Almeida Pereira 7c985695b7 Correct display of RE-SQL for partitioned tables in Greenplum. Fixes #3050 2018-01-25 12:37:17 +00:00
Murtuza Zabuawala 97760d65c2 Add keyboard navigation in Query tool module via Tab/Shift-Tab key. Fixes #2896
Note:
1) Once the keyboard shortcut infrastructure is ready we will add generic shortcut to focus out from CodeMirror editor and set foucs to next element, Right now there is no way of doing this, For testing purpose you can manually focus out from CodeMirror and click on data output panel to continue navigate using Tab key.
2) As of now inner panel's are not getting focused on Tab/Shift-Tab keys but once RM#2895 patch gets committed it will start working automatically as it's inherited code which will add tabindex tag automatically on each newly created wcDocker panel.
2018-01-25 12:27:13 +00:00
Chethana Kumar 5cea5f8485 Update scan and index scan EXPLAIN icons for greater clarity. Fixes #3021 2018-01-24 15:39:59 +00:00
Murtuza Zabuawala 0e41b3364b Support keyboard navigation in the debugger. Fixes #2897
In passing, fix injection of variable values. Fixes #2981
2018-01-23 11:58:10 +00:00
Joao Pedro De Almeida Pereira 65337daeba Display functions in Greenplum. Fixes #3044 2018-01-23 11:10:46 +00:00
Joao Pedro De Almeida Pereira 678699c408 Display partitions in Greenplum. Fixes #3036 2018-01-23 10:41:36 +00:00
Khushboo Vashi 8df006343b Fix feature tests following button tooltip changes. 2018-01-23 10:01:20 +00:00
Dave Page 0ec74dfa89 Modern versions of yarn don't require -- to forward options. 2018-01-22 11:29:07 +00:00
Dave Page 2b1c887945 Add missing comma to appease the linter 2018-01-22 11:28:04 +00:00
Dave Page 51cda98911 Revert "Update ESLint requirement to support --fix-dry-run"
This reverts commit 0ee9f09bbd.
2018-01-22 11:05:42 +00:00
Joao Pedro De Almeida Pereira 284adbbb90 Correctly display SQL of multiple objects on the SQL tab in GPDB. 2018-01-22 11:04:49 +00:00
Khushboo Vashi ca80cfa04a Ensure clickable images/buttons have appropriate tooltips for screen readers. Fixes #2904 2018-01-22 10:37:56 +00:00
Surinder Kumar 0ee9f09bbd Update ESLint requirement to support --fix-dry-run 2018-01-22 10:35:11 +00:00
Ashesh Vashi 404f1cc8ef Fixing the javascript file after running pga_eslint.js script 2018-01-17 13:24:25 +05:30
Ashesh Vashi 4d8b7556f8 Introducing custom linter script for javascript files.
Also, changed the 'linter' yarn-command to use this script.

This script will run the 'eslint' against all the static javascripts,
found under pgadmin and regression directories of source (excepts
'vendor', 'generated'). It also allows to run the 'eslint' against
specific javascript file[s].

In order to run eslint on all static javascript files, run the following command:
  yarn run linter
  node pga_eslint

In order to run eslint on specific files, run the following command:
  yarn run linter --file <filename> [<filename>]
  node pga_script --file <filename> [<filename>]

In order to provide eslint specific commands, run the following command:
  yarn run linter [--file <filename> [<filename>]] --eslint-options
  node pga_script [--file <filename> [<filename>]] --eslint-options

  i.e.
    yarn run linter --fix
    yarn run linter --debug
    node pga_eslint --fix --debug pgadmin/static/js/pgadmin.js
2018-01-17 13:15:38 +05:30
Dave Page 55c2ab0b24 Fix typo in string. 2018-01-16 16:41:43 +05:30
Murtuza Zabuawala ad46d61bd3 Fix a minor UI issue on dashboard while displaying subnode control in Backgrid. Fixes #3013 2018-01-15 22:31:39 +05:30
Murtuza Zabuawala 03605bf9be Doc updates for connection status monitoring. 2018-01-15 18:55:36 +05:30
Joao Pedro De Almeida Pereira 56e922f5ab Support Properties on Greenplum databases. Fixes #3015 2018-01-15 14:44:40 +05:30
Dave Page 6f8066d261 Fix Python wheel dependencies. Fixes #3011 2018-01-15 09:15:46 +05:30
Murtuza Zabuawala 8520871bc6 Monitor connection and transaction status in the query tool. Fixes #2475 2018-01-12 14:34:39 +00:00
Dave Page 82aa8035c2 Refer users who want to build themselves from scratch to the README. 2018-01-12 13:37:59 +00:00
Dave Page 852a2fce84 Make the title a little more appropriate. 2018-01-12 12:58:58 +00:00
Magnus Hagander 601a7b1a5c Fix typo 2018-01-12 12:43:48 +00:00
Joao Pedro De Almeida Pereira ed3e374df6 Support server and database statistics on Greenplum. Fixes #3004 2018-01-12 10:02:46 +00:00
Ashesh Vashi c32eb6bd37 Fixed the warnings/errors reported by eslint for all the static
javascripts.
2018-01-12 13:00:14 +05:30
Murtuza Zabuawala b78b97d89b Ensure images in the docs have alt tags for screen readers. Fixes #2903 2018-01-11 16:58:30 +00:00
Dave Page 8b3aecd137 Don't listen on port 443 if TLS is not enabled when launching the container. Fixes #2998 2018-01-11 15:04:11 +00:00
Dave Page 405de59298 Fix name of release notes. 2018-01-10 10:45:29 +00:00
Karen Blatchley e8c05fbaa5 Add release notes for 2.1 2018-01-10 10:39:24 +00:00
Karen Blatchley 57f4131dfe Add release notes for 2.1 2018-01-10 10:38:51 +00:00
Dave Page f1e39dd20c Update version number for release. 2018-01-10 09:55:13 +00:00
Khushboo Vashi def2df9028 Fix view data for views/mat views. Fixes #2993 2018-01-10 09:32:42 +00:00
Murtuza Zabuawala aec86970f2 Add ALT tags to images for accessibility. Fixes #2902 2018-01-08 12:43:36 +00:00
Dave Page 89821c0d19 Update copyright notices for 2018. 2018-01-05 10:42:50 +00:00
Khushboo Vashi 711fbd5144 Allow use of transition tables in PG 10 triggers. Fixes #2933 2018-01-03 16:25:03 +00:00
Murtuza Zabuawala 0810c681c3 Ensure the switch animation is consistent on the table dialogue and avoid displaying an error incorrectly. Fixes #2624 2018-01-03 15:32:44 +00:00
Murtuza Zabuawala c15d814268 Clear the messages tab when running EXPLAIN/EXPLAIN ANALYZE. Fixes #2974 2018-01-03 15:19:56 +00:00
Murtuza Zabuawala e21f1e3291 Prevent multiple connections to new slow-to-respond servers being initiated in error. Fixes #2928 2018-01-03 14:49:08 +00:00
Khushboo Vashi 49dfd6fe31 Ensure invalid options can't be selected on triggers on views. Fixes #2945 2018-01-03 14:32:00 +00:00
Khushboo Vashi 90629da524 Close user language preference drop down when it loses focus. Fixes #2956 2018-01-03 13:36:49 +00:00
Murtuza Zabuawala 1dd1c10255 Do not decrypt the password when the password is 'None'. Fixes #2765
This should avoid the common but harmless exception "ValueError: IV must be 16 bytes long while decrypting the password."
2018-01-03 13:19:58 +00:00
Khushboo Vashi e64bc2a821 Show complete SQL for FTS dictionaries. Fixes #2949 2018-01-03 13:16:11 +00:00
Susan Douglas d8194e7c0f Correct the description for the host name field on the server dialogue. 2018-01-03 13:04:58 +00:00
Mark Deneen 3289a18a1a Remove any Apache HTTPD PID file before starting the container, to prevent failures during restart. 2018-01-03 12:54:52 +00:00
Neel Patel 90f5af8902 Avoid a potential crash when downloading. Fixes #2964 2017-12-19 12:20:01 +00:00
Harshal Dhumal 88bcd3b512 Make the query tool datatype test easily configurable and extendable and add support for multi-dimensional arrays and enums. 2017-12-18 15:10:47 +00:00
Dave Page 6577723a2a Fix duplicate link text 2017-12-18 11:20:41 +00:00
Dave Page 005abab7c4 Runtime version update 2017-12-18 11:13:28 +00:00
Susan Douglas 10d0307834 Doc updates for server connection dialogue and related info. 2017-12-18 11:00:11 +00:00
Dave Page d44328664a Bump version for some dev builds. 2017-12-18 10:35:58 +00:00
Begina Felicysym ebd096f5cc Updated Polish translation from Begina. Extract/update/compile as well for completeness. Current status:
1480 of 1857 messages (79%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1692 of 1857 messages (91%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1827 of 1857 messages (98%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1829 of 1857 messages (98%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1435 of 1857 messages (77%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2017-12-18 10:08:03 +00:00
Murtuza Zabuawala 3fe655e944 Allow selection of validation error text. Fixes #2954 2017-12-18 10:03:39 +00:00
Murtuza Zabuawala eae6f05b7c Allow files to be opened by double clicking on them. Fixes #2810 2017-12-18 09:48:14 +00:00
Murtuza Zabuawala 36d779df5d Add tab indexes for debugger controls. 2017-12-18 09:23:11 +00:00
Murtuza Zabuawala bceb6aef3c Don't try to render security URLs in desktop mode. Fixes #2952. Fixes #2922 2017-12-18 09:15:36 +00:00
Murtuza Zabuawala 937984f2dc Don't un-comment code with alt+. in the query tool. It's only supposed to respond to ctrl/cmd+. Fixes #2769 2017-12-13 15:58:00 +00:00
Susan Douglas d02a0de8c9 Preferences dialogue help update. 2017-12-13 15:47:15 +00:00
Khushboo Vashi 107795db10 Ensure column collation isn't lost when changing field size. Fixes #2779 2017-12-13 15:44:10 +00:00
Murtuza Zabuawala 96a2987ef6 Prevent attempts to select directories as files in the file dialogue. Fixes #2937 2017-12-13 15:35:08 +00:00
Murtuza Zabuawala c5d1fc8189 Ensure the datatype cache is updated when a domain is added. Fixes #2778 2017-12-13 15:17:17 +00:00
Dave Page b2e844c0ad Fix label inconsistency spotted by Susan. 2017-12-13 14:59:15 +00:00
Murtuza Zabuawala 4246a3b22f Ensure password changes are successful if authenticating using a pgpass file. Fixes #2720 2017-12-13 13:28:07 +00:00
Harshal Dhumal 55254a649f Re-hash the way that we handle rendering of special types such as arrays. Fixes #2782. Fixes #2822. 2017-12-13 11:53:27 +00:00
Khushboo Vashi 0c5a5ba9c2 Add support for editing data in tables with OIDs but no primary keys. Fixes #2849.
This patch also updates the editor to retrieve all row values on save, thus immediately showing default values and allowing subsequent editing without a refresh.
2017-12-13 10:28:31 +00:00
Susan Douglas 61080ce513 Update query tool docs. 2017-12-11 12:01:54 +00:00
Dave Page 4bcec932a3 Correct names for the Japanese translators:
Junichi Tado
Kosuke Kida
Nozomi Anzai
2017-12-07 21:31:46 +09:00
Murtuza Zabuawala 22c38e4562 Fix a reference before assignment error in the file dialogue. Fixes #2934 2017-12-06 13:42:05 +09:00
Murtuza Zabuawala f5718b9d56 Misc fixes for the pgAgent module:
1) User was allowed to enter start date ahead of end date while scheduling a job. Fixes #2921

2) Datetime picker was not displaying in the grid (sub-node collection control). Fixes #1749

3) Fixed UI issue where validation error was not displaying properly for Datetime control.
2017-12-06 12:25:45 +09:00
Chethana Kumar c74b348bac Update EXPLAIN icons. Fixes #2936 2017-12-06 11:45:02 +09:00
Dave Page 3b7656b3d5 Push HTTPD logs to container stdout/stderr as appropriate. Fixes #2920 2017-12-05 14:23:35 +09:00
Dave Page 67f0c8a39e Add license field to package.json to stop yarn bleating. 2017-12-05 14:21:13 +09:00
Murtuza Zabuawala 7fab041623 Prevent the user pressing the select button in the file manager when it is supposed to be disabled. Fixes #2923 2017-12-05 13:43:02 +09:00
Murtuza Zabuawala 136ed0d3e2 Fix debugging of self-referencing functions. Fixes #2524 2017-12-05 13:32:06 +09:00
Murtuza Zabuawala bac9c77c4e Cleanup some inconsistent error dialog titles. Fixes #2098 2017-12-02 05:12:40 +00:00
Dave Page 7e419d1bfe Add a note to the README on creating the bundle. 2017-12-02 05:12:40 +00:00
Harshal Dhumal 1a4e21e6dd Fix regression tests for password reset in server mode 2017-11-30 13:16:59 +00:00
Susan Douglas 54389595da Doc updates for resource groups and roles. 2017-11-30 12:22:22 +00:00
Harshal Dhumal f3256aef71 Don't login the user with every request in desktop mode. Just do it once. Fixes #2922 2017-11-30 12:02:41 +00:00
Harshal Dhumal 35a5cf22d5 Refuse password changes (and tell the user) if the notification email cannot be sent. Fixes #2892 2017-11-30 11:16:38 +00:00
Murtuza Zabuawala 2995d6e9c5 Fix the width of Role dialogue so tabs don't wrap. 2017-11-30 10:58:27 +00:00
Murtuza Zabuawala 389cf01af7 Cleanup the layout of the filter data dialogue. Fixes #2924 2017-11-30 10:53:48 +00:00
Chethana Kumar 709f646f5e Add a missing screenshot, and remove personal info from another. 2017-11-30 09:50:21 +00:00
Ashesh Vashi d54c35d74f Fixing the lint error messages in javascript using 'eslint --fix'
command.
2017-11-30 13:01:41 +05:30
Akshay Joshi ea82d92e41 Do not show success message, when there is an error saving the data in
the DataGrid.

Fixes #2907
2017-11-30 13:01:30 +05:30
Akshay Joshi 281b6c91b5 Using the correct type name (along with the internal name) while
generating the query for update/insert table data (Data grid).

Modified by Ashesh for array support.

Fixes #2830
2017-11-30 13:01:30 +05:30
Murtuza Zabuawala f10733e8d4 Ensure the auto-complete selection list can display longer names. Fixes #2726 2017-11-29 11:14:24 +00:00
Maxim Zakharov 4617a90123 Add missing __init__.py to backports.csv when building the MSVC windows build. Fixes #2918 2017-11-29 09:58:57 +00:00
Murtuza Zabuawala 362bd15c8e Format JSON/JSONB nicely when displaying it in the grid editor pop-up. Fixes #2748 2017-11-28 14:21:31 +00:00
Khushboo Vashi 5bfa450a5f Allow form validation messages to be close in case the eclipse anything on the form. Fixes #2859 2017-11-28 14:10:12 +00:00
Murtuza Zabuawala 9ae4a03784 Allow changing of the users password without leaving the app. Fixes #2891 2017-11-28 10:55:54 +00:00
Navnath Gadakh 035c134fed Cleanup properly after running the Foreign Table test cases. 2017-11-28 09:44:28 +00:00
Dave Page 10c8befb71 Illustrate how to set the default mail sender name. 2017-11-28 09:29:31 +00:00
Harshal Dhumal 7db7da5b0e Display process output as it happens. Fixes #2811 2017-11-27 13:00:47 +00:00
Navnath Gadakh 80c4a3fb1a Use sufficiently long random strings in test objects to avoid conflicts. 2017-11-27 12:01:50 +00:00
Murtuza Zabuawala fe7cfa35df Attempt to decode database errors based on lc_messages. Fixes #2806. Fixes #2821 2017-11-27 11:53:25 +00:00
Murtuza Zabuawala d614c88ada Ensure we don't show the full path on the server when using virtual filesystem roots in server mode for SSL certs. Fixes #2866 2017-11-27 11:25:50 +00:00
Dave Page 542f2911a3 Revert inadvertant change to doc page 2017-11-27 11:01:14 +00:00
Chethana Kumar b8c2326764 Doc screenshot update 2017-11-27 10:58:53 +00:00
Dave Page fd077e2536 Disable the line ending check entirely in eslint, as the previous platform-specific fix doesn't work with all versions. 2017-11-23 09:34:44 +00:00
Harshal Dhumal 05a00f4ac8 Make the "Save Changes" prompts in the query tool optional. Fixes #2845 2017-11-23 09:20:59 +00:00
Murtuza Zabuawala 38f111d969 Ensure the scroll location is retains in the query tool data grid if the user changes tab and then returns. Fixes #2875 2017-11-23 09:07:46 +00:00
Maxim Zakharov 5f5c590ffd Fix bundle creation on Windows which was failing due to \r\n line endings in code mirror. Fixes #2908 2017-11-23 09:02:00 +00:00
Murtuza Zabuawala fdb4fa454a Honour whitespace properly in the data grid. Fixes #2880 2017-11-22 16:48:36 +00:00
Murtuza Zabuawala 1bc318f091 Ensure newly added rows cannot be editted until we have key values. Fixes #RM2886 2017-11-22 16:38:18 +00:00
Murtuza Zabuawala f0db93cefd Improve clarity of the boolean checkbox. 2017-11-22 16:28:08 +00:00
Dave Page 8880826260 Fix a yarn warning: "warning From Yarn 1.0 onwards, scripts don't require "--" for options to be forwarded. In a future version, any explicit "--" will be forwarded as-is to the scripts." 2017-11-21 17:25:28 +00:00
Murtuza Zabuawala 930dd8af1f Some browsers don't properly support tri-state checkboxes, so create our own control to handle true/false/null. Fixes #2848 2017-11-21 17:22:25 +00:00
Murtuza Zabuawala b284572afe Allow connections to be coloured in the treeview and query tool. Fixes #1383. Fixes #2802 2017-11-21 16:28:01 +00:00
Harshal Dhumal 9212699936 When selecting an SSL cert or key, update only the expected path in the UI, not all of them. Fixes #2760. Fixes #2867 2017-11-21 15:59:44 +00:00
Murtuza Zabuawala dd8e2fe8a6 Quote the owner name when creating types. Fixes #2787 2017-11-21 11:32:27 +00:00
Murtuza Zabuawala a85538a1fc Remove the artificial limit of 4000 characters from text areas. Fixes #2877 2017-11-21 11:02:21 +00:00
Neel Patel 5b5363e2c4 _blank is the correct HTML target for anchors, not _new. Fixes #2679. 2017-11-21 10:19:11 +00:00
Dave Page 182369cbab And remove the extra semicolons. Sigh. 2017-11-20 17:15:15 +00:00
Dave Page be8d3604fb Add missing semicolons. 2017-11-20 17:12:10 +00:00
Paresh More a539147a0e Fix /NOICONS switch in the windows installer. Fixes #1366 2017-11-20 16:58:35 +00:00
Murtuza Zabuawala ce246ecce4 Stop Python 2.6 barfing on newer versions of Selenium 2017-11-20 16:55:54 +00:00
Paresh More 8ff753deb8 Prevent the Windows installer accepting paths containing invalid characters. Fixes #1365 2017-11-20 16:38:20 +00:00
Khushboo Vashi 4568fe22f7 Decode the field separator and quote char if needed. 2017-11-20 16:28:13 +00:00
Neel Patel 8cc1a007b5 Ensure we can download large files and keep the user informed about progress. Fixes #2829. Fixes #2491. Fixes #2715 2017-11-20 14:43:34 +00:00
Khushboo Vashi 0c566f132e Allow configuration of CSV and clipboard formatting of query results. Fixes #2781 2017-11-20 13:50:47 +00:00
Murtuza Zabuawala 2579458091 Fix support for time without timezone. Fixes #2881 2017-11-20 13:36:50 +00:00
Murtuza Zabuawala 5fd3a7dd3d Display relevant error messages when access is denied creating a schema. Fixes #2094 2017-11-20 13:31:03 +00:00
Murtuza Zabuawala 2f17ecba76 Update selenium version 2017-11-16 14:22:44 +00:00
Harshal Dhumal 051788d040 Fix a referenced before assignment bug in connection management. Fixes #2868 2017-11-16 12:40:00 +00:00
Dave Page afd65018db Current versions of Chrome need a newer driver for selenium tests. 2017-11-16 12:13:53 +00:00
Dave Page 3c27d2fd7e Python tests don't need to have JS dependencies installed. 2017-11-16 12:01:22 +00:00
Murtuza Zabuawala 537f6f0ab1 Display long names appropriately in dialogue headers. Fixes #2278 2017-11-16 11:56:05 +00:00
Murtuza Zabuawala af2722faa3 Focus on the filter textarea when opening filter options in the query tool. 2017-11-16 11:01:40 +00:00
Dave Page cf1440f41d Properly set the hostname for SSL use in containers. 2017-11-16 09:54:44 +00:00
Neel Patel 96df3147d6 Check and attempt to fir the registry on Windows, if the text/css type is misconfigured. Fixes #2716 2017-11-15 16:33:24 +00:00
Alexander Lakhin 8f070f6095 Fix utility output capture encoding. Fixes #2854 2017-11-09 08:51:56 -05:00
Alexander Lakhin 3e1caa61e1 Russian translation update. 2017-11-09 08:45:56 -05:00
Dave Page 35b57477de Remove data grid icon for consistency with other menu options. 2017-11-07 21:20:01 -05:00
Murtuza Zabuawala be0e637718 Prevent error messages covering the last row in a grid. Fixes #2850 2017-11-07 21:07:30 -05:00
Khushboo Vashi 88cd68c2b9 Add an option to manually count rows in tables to render the properties. Fixes #2846 2017-11-07 20:27:10 -05:00
Neel Patel 8a4b2ea953 Confirm with the user before exiting the runtime. Fixes #2443 2017-11-07 20:10:55 -05:00
Murtuza Zabuawala 8b543a58fe Fix a number of graphical explain rendering issues. Fixes #2824. Fixes #2842. Fixes #2843. 2017-11-06 19:59:01 -05:00
Alexander Lakhin 187ab22d90 Further missing translation fixes. Stats now:
1481 of 1831 messages (80%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1694 of 1831 messages (92%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1748 of 1831 messages (95%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1750 of 1831 messages (95%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1436 of 1831 messages (78%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2017-11-06 19:49:20 -05:00
Chethana Kumar 2be418706d Updated colours of tree view icons, which is to be more comfortable in identifying. 2017-11-06 13:03:03 +05:30
Begina Felicysym 62e70f3c4f Update Polish translation.
1748 of 1750 messages (99%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
2017-11-05 08:36:24 -05:00
Alexander Lakhin f15f46592a Tag some translations that were not, well, tagged. Current stats:
1481 of 1777 messages (83%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1694 of 1777 messages (95%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1472 of 1777 messages (82%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1750 of 1777 messages (98%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1436 of 1777 messages (80%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2017-11-05 08:32:26 -05:00
Dave Page b2186db562 Revert "Fix a number of cases where strings were not properly marked for translation."
This reverts commit 1f23838a4c due to unintended side
effects it caused - specifically, expanding Databases on the treeview displayed
Servers again
2017-11-03 16:45:20 +00:00
Alexander Lakhin 1f23838a4c Fix a number of cases where strings were not properly marked for translation. 2017-11-03 13:10:42 +00:00
Khushboo Vashi f73ce2dfc3 Ensure estimated rows are included correctly in CREATE script for functions. Fixes #2651 2017-11-02 09:47:31 +00:00
Murtuza Zabuawala 897bf4857a Fix counted rows display in table properties. Fixes #2836 2017-11-02 09:35:44 +00:00
Alexander Lakhin 2dcd2cc77f Update Russian translation. 2017-11-01 20:23:59 +00:00
Dave Page 70d31be496 Another message catalog update. Stats:
1481 of 1750 messages (84%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1694 of 1750 messages (96%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1472 of 1750 messages (84%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1706 of 1750 messages (97%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1436 of 1750 messages (82%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2017-11-01 15:19:19 +00:00
Alexander Lakhin 23d431fb54 Remove more exclamation marks from error messages. 2017-11-01 15:18:07 +00:00
Dave Page 635d944e03 Message catalog update. Current stats look like:
1503 of 1756 messages (85%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1716 of 1756 messages (97%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1494 of 1756 messages (85%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1728 of 1756 messages (98%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1458 of 1756 messages (83%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
2017-11-01 13:01:02 +00:00
Alexander Lakhin 9be1364d1a Various string improvements and fixes. 2017-11-01 12:58:19 +00:00
Murtuza Zabuawala 714a429879 Update psycopg2 requirement to ensure 10.x+ features work. 2017-11-01 12:45:00 +00:00
Dave Page 45be22b00e Output statistics when compiling messages 2017-10-31 09:16:47 +00:00
Dave Page 6a5ac730a0 Update translations 2017-10-31 09:10:17 +00:00
Alexander Lakhin 706ef38e95 Add a Russian translation 2017-10-31 09:10:00 +00:00
Alexander Lakhin 87549e0936 Add a Russian translation 2017-10-31 09:09:00 +00:00
Alexander Lakhin 8860bc3c3e Saved user language was not being picked up in case of non-server mode.
Because - the get_locale(...) function was being executed before any
request, and user login after first request. Hence - the values for
the labels in the Preferences are not being translated properly.

Fetch the raw value of user_language from configuration in case of
runtime/non-server mode to fix the issue.
2017-10-30 18:20:41 +05:30
Dave Page bc0320d21e Add a Japanese translation created by:
Junichi Tado
Nozomi Amzai
Kouske Kida
2017-10-27 14:00:09 +02:00
Dave Page 61e809b636 Update message catalogs. 2017-10-27 13:59:03 +02:00
Alexander Lakhin 0a1cf30abb Return the translations, and not empty array from the
'translations.js'.

It was regression of the commit-id:
4a91bcde30
2017-10-24 18:50:26 +05:30
Ashesh Vashi c53c6d2f48 Using 'categroy_id' instead of 'cid' in the preferences Backbone.Model,
as it is used by the Backbone.Collection to get the object by id.
2017-10-24 18:47:36 +05:30
Ashesh Vashi 8adf005ef8 Allow to send error, and warning on console from the javascript modules. 2017-10-24 16:56:17 +05:30
Dave Page a2c4fb02bc Show how the config/storage directory can be mounted on the host under docker. 2017-10-16 16:10:15 +01:00
Dave Page a9f10ddad1 Update yarn lock file. 2017-10-16 16:01:45 +01:00
Dave Page 890fece73a Fix check constraint regression tests. 2017-10-16 16:01:07 +01:00
Murtuza Zabuawala 784f3f59d8 Fix name of 'check-constraints' to follow the usual singular convention. 2017-10-16 15:40:15 +01:00
Murtuza Zabuawala 0cb57848f8 Ensure auto-indent honours the spaces/tabs config setting. Fixes #2780 2017-10-16 15:37:03 +01:00
Murtuza Zabuawala ce5f5015b3 Use HTTPS for accessing help docs. 2017-10-16 09:21:02 +01:00
Dave Page 845b296aed Add optional TLS support to the docker container. 2017-10-12 16:16:02 +01:00
Dave Page a8a2947da6 Remove the runtime zoom shortcuts from the SQL Editor shortcuts section. 2017-10-12 10:12:55 +01:00
Neel Patel 56e1fd85f4 Ensure line numbers form CodeMirror don't appear on top of menus. Fixes #2738 2017-10-12 10:07:18 +01:00
Dave Page cd7d80b650 Add a target for building PDF docs. 2017-10-11 14:57:58 +01:00
Dave Page 1f4a814e72 Remove some unused index directives. 2017-10-11 11:57:59 +01:00
Harshal Dhumal 04beec1309 Fix various issues that could cause an exception on startup. Fixes #2713 2017-10-10 09:50:47 +01:00
Murtuza Zabuawala 2f5a2b2392 Only allow specification of a pgpass file if libpq >= 10. Fixes #2768 2017-10-10 09:31:27 +01:00
Murtuza Zabuawala 63103c7a48 Remove panels for www.pgadmin.org and www.postgresql.org as they won't work with X-Frame-Options: SAMEORIGIN which is used now. 2017-10-10 09:16:23 +01:00
Khushboo Vashi 91406d2879 Ensure HTMLMIN is only used with Python 2.7+ 2017-10-10 09:14:23 +01:00
Murtuza Zabuawala f2929046fa Refactor to remove duplicate code for the cancel/terminate buttons in the dashboard. 2017-10-09 09:18:46 +01:00
Dave Page cb25bb0e93 Add missing date. 2017-10-05 16:11:24 +01:00
Dave Page d57072b156 Bump version number for release. 2017-09-29 16:00:21 +01:00
Ashesh Vashi 5860de838a Changed the wording for 'Terminated session successfully' 2017-09-29 20:20:27 +05:30
Ashesh Vashi 4b2b08174c Do not show the terminate session icon in red as per Dave 2017-09-29 20:17:51 +05:30
Ashesh Vashi 2b64834179 Allow to terminate a session from the server, and database dashboard. 2017-09-29 20:10:33 +05:30
Ashesh Vashi 0d754fc39f Remove the reference of font-mfizz completely. 2017-09-29 11:26:45 +05:30
Ashesh Vashi 9c6c32e936 Resolved the logo issue.
For some unknown reason, font-mfizz was showing the slonik icon in
italic. Even after upgrading it to the latest version of font-mfizz, the
problem was not resolved.

So - instead of using the vector font, using the PostgreSQL SVG logo as
the application icon, and documentation link on dashboard now.
2017-09-29 11:07:26 +05:30
Surinder Kumar bcce574e83 Using the correct path for the font-mfizz stylesheet.
Reported by: Neel Patel
2017-09-29 09:17:39 +05:30
Akshay Joshi 5a132a547f Ensure using an alternate role to connect to a database doesn't cause an error when checking recovery state. Fixes #2742 2017-09-28 15:09:49 +01:00
Dave Page 9588d76b75 Add missing issue, per Harshal. 2017-09-28 10:45:23 +01:00
Dave Page 8ea85221f0 Update message catalogs. 2017-09-28 10:29:46 +01:00
Dave Page 50a78abf48 Update release notes. 2017-09-28 10:21:40 +01:00
Dave Page 739d8e2f1f Dead code cleanup. 2017-09-28 10:16:49 +01:00
Murtuza Zabuawala f855ed88ce Allow selection of SSL certificates and pgpass files in connection properties. Fixes #2649. Fixes #2650 2017-09-28 10:02:33 +01:00
Dave Page 510bc6c974 Update release notes. 2017-09-27 16:46:03 +01:00
Ashesh Vashi cc10a4ee54 Upgraded the font-mfizz to latest version (v:2.4.1) to resolve an issue,
about showing the PostgreSQL logo in italic in runtime on windows.
2017-09-27 07:41:15 +05:30
Chethana Kumar 62c9376546 Improve icon alignment. 2017-09-22 14:29:34 +01:00
Dave Page bcba596408 Add the ability to build a basic Docker container. 2017-09-21 16:49:37 +01:00
Dave Page 18dc938556 Use the correct lexer in the Apache/Windows docs. 2017-09-20 16:42:47 +01:00
Surinder Kumar 263e235862 Clarify how virtual envs can be used in WSGI mode, and ensure we ship the required bits on Windows. 2017-09-20 16:22:51 +01:00
Dave Page 354679e69b Fix an issue where we were executing SELECT statements in transactions in query tool which probably is not required because SELECT statements are already protected from dirty reads. Fixes #2683 2017-09-20 11:59:37 +01:00
Murtuza Zabuawala 64159d11ce Fix font on alertify dialogues 2017-09-20 11:42:16 +01:00
Akshay Joshi 13665f68d8 Fix validation message styling on thegrant wizard. Fixes #2673 2017-09-20 11:34:01 +01:00
Murtuza Zabuawala 2ddbddba33 Improve display of error messages in the query tool. Fixes #2700 2017-09-20 11:29:24 +01:00
Akshay Joshi fe757c384b Filtered Rows dialog not opened from the context menu. Fixes #2699 2017-09-19 11:46:51 +05:30
Dave Page 62d7a1044e Remove unused import that was causing a hard error on Windows 2017-09-18 16:54:43 +01:00
Dave Page 5ae681f2ba Bump version for RC2 release. 2017-09-18 16:15:13 +01:00
Harshal Dhumal f0ad26ba7a Fix for Exception when the server is restarted. Fixes #2713
This issue was caused because we recently added session_write_delay in session.
So session won't be written/updated to disk from memory until specified seconds are elapsed.

However we must forcefully write/update session to disk if user loges in or out irrespective of session_write_delay to keep sessions from memory and disk in sync as user logged in status is kept in session.
2017-09-18 14:39:43 +01:00
Akshay Joshi bdc08d94c4 Fix View Data option and column config for Foreign Tables. Fixes #2691 2017-09-18 14:32:17 +01:00
Murtuza Zabuawala 8bededa859 Fix disable trigger menu option. Fixes #2707 2017-09-18 12:37:59 +01:00
Murtuza Zabuawala e64c52a446 Fix tablespace move prompt message. Fixes #2708 2017-09-18 12:36:04 +01:00
Murtuza Zabuawala 5ebfd88f11 Correct alignment of the X button on dismissable alerts. 2017-09-18 11:57:44 +01:00
Murtuza Zabuawala bc5a5a5b45 Fix error message regexp in the query tool that could fail in some cases. Fixes #2700 2017-09-18 11:55:04 +01:00
Harshal Dhumal da40573f0b Fix user manager role handling. Fixes #2641 2017-09-18 11:45:57 +01:00
Harshal Dhumal 765e130336 Support Flask-Security 3.0 2017-09-18 11:40:09 +01:00
Dave Page a317df1351 Ensure builtins.SERVER_MODE is set in the WSGI wrapper. 2017-09-18 10:33:26 +01:00
Surinder Kumar 026ef7b8b7 Support React v15.5 and later where the code fails to run because React's PropTypes is no more part of React Module. 2017-09-18 10:08:12 +01:00
Harshal Dhumal 30e7016077 Changed array representation and formatting for the data types in Query Tool and View Data. Fixes #2671 2017-09-18 12:07:15 +05:30
Murtuza Zabuawala 8150f93c06 Fix menu left-hand margin. 2017-09-15 14:45:02 +01:00
Atul Sharma c3ea3b7bdf Replace the "Roboto" font family with "Open Sans" for alertify dialogs. 2017-09-15 14:08:29 +01:00
Murtuza Zabuawala 9cfb2f3cbe Fix filtering of system schemas so pg_* is hidden but pg* is not. Fixes #2709 2017-09-15 13:50:06 +01:00
Ashesh Vashi 55e14e4d78 Handle the executor nodes, which are unknown to the Explain module,
gracefully by showing the 'ex_unknown.png' for such nodes.

Reported by: Murtuza
Refs #2706
2017-09-15 10:51:37 +05:30
Atul Sharma 788f7f3a69 Bundle fonts with pgAdmin so we have a standard set for all platforms.
Research by Shirley at Pivotal.
2017-09-13 16:01:14 +01:00
Surinder Kumar e819465e38 Always pack React in prod mode to avoid a bug in debug mode that prevents the history tab working. 2017-09-13 15:50:09 +01:00
Chethana Kumar ff79dfc186 Update cast icons with improved design. 2017-09-13 10:43:39 +01:00
Chethana Kumar 3779c36d0f Update server and database icons with a clearer design. 2017-09-13 09:59:07 +01:00
Murtuza Zabuawala 80ce889c3d Fix an issue in User mapping module where users were not listed. Fixes #2693 2017-09-13 09:53:25 +01:00
Murtuza Zabuawala 5891bda06a Fix an issue where base types are not displaying in the create/edit domain dialog, also corrected the condition to show hidden system types. Fixes #2692 2017-09-13 09:52:16 +01:00
Surinder Kumar 120dbcc7d8 Run webpack in production mode when building for releases. Fixes #2660 2017-09-13 09:47:01 +01:00
Teng Zhang 512afd6618 Highlighting greenplum keywords in sql editor 2017-09-11 19:39:50 +05:30
Chethana Kumar f79b7f26b1 Using the svg icons for domain constraint, and server browser nodes. 2017-09-11 18:24:04 +05:30
Dave Page 51fd8f29fb Add new icons to release notes. 2017-09-11 11:22:43 +01:00
Dave Page 732c373dfb Use wheel==0.29.0 with Python 2.6 and 3.3. 2017-09-11 11:06:29 +01:00
Dave Page cca7526b9b Remove menu icon tests that are no longer required. 2017-09-11 10:13:54 +01:00
Dave Page 4b5b3195c4 Bump the build suffix in preparation for release. 2017-09-11 10:04:20 +01:00
Ashesh Vashi 3bbd1a8a48 Remove icons from the menus to de-clutter the UI and make it more consistent with most OSs. 2017-09-11 09:51:26 +01:00
Dave Page 8b1aeadaf0 Stick with the older Flask-Script module for Python 2.6 2017-09-11 09:09:49 +01:00
Ashesh Vashi ac2512799e Rename the SecurityGroupUnderSchema to SecurityGroupSchema, and
redefined in the database (instead of schema) javascript module, as it
is also used by the foreign-server node too.

Reported by: Neel Patel
2017-09-11 13:13:40 +05:30
Ashesh Vashi 8c8c0e78ca Miscellaneous fixes for icon sizing issue, missing tree nodes to be
webpacked, etc.

- Fixed the background-size for the svg icons to 20x20 px such that it
  does not adjust it's size when a context menu height is different due
  to length of the node label, also - it allows us to fix the issue of
  icons sizes in the Grant Wizard.

- Added two missing browser tree nodes in the webpack configuration
  i.e. Foreign Server, and User Mapping
- Removed a redundant javascript file foreign-server.js
- Fixed the missing context menu icons for Foreign Table, and Tablespace
  nodes.

Thanks EDB development team to find the regression added after the icon
changes in quick time.
2017-09-11 12:55:42 +05:30
Ashesh Vashi 4018562bc7 Changes in the stylesheets to support the svg icons for the browser
tree nodes.
2017-09-11 11:22:55 +05:30
Chethana Kumar 23a00f9614 Replacing existing browser tree node png icons with the svg icons. Made
it compatible with the pgAdmin 4 color combination.

TODO::
Icons for the following nodes are in PNG format.
- Domain Constraint (Only the invalid icon)
- pgAgent Job Steps
- Green Plum database server
- Server (Only server.png, which is used in the create/edit dialog)
2017-09-11 11:17:31 +05:30
Karen Blatchley 23dd68b212 Initial draft of the 2.0 release notes. 2017-09-08 15:50:13 +01:00
Murtuza Zabuawala 8d248dab4c Fix quoting of index column names on tables. Fixes #2619 2017-09-07 16:36:35 +01:00
Murtuza Zabuawala d5f60e1a47 Fix layout of password prompt dialogue. Fixes #2684 2017-09-07 16:27:02 +01:00
Harshal Dhumal 263aa42725 Reset query tool options before running tests. Fixes #2681 2017-09-05 16:25:15 +01:00
Surinder Kumar c4393a7795 Fix Copy so it still works after query results have been copied. Fixes #2637 2017-08-31 14:50:39 +01:00
Akshay Joshi 47cf874460 1) Fixed error in alertify.pgNotifier when server connection is lost.
2) Change styling of alertify.pgNotifier as we did for success, error and info.
2017-08-31 18:02:03 +05:30
Surinder Kumar 2945b3fe93 Define the proper NODE_ENV environment during running the webpack.
Using the webpack.DefinePlugin during the development build too, not
just in production build.

Fixes #2596.

Also - passing option 'warning: false' for UglifyJsPlugin, which will
not show warning messages on the console during the production build.
2017-08-31 14:28:52 +05:30
Dave Cramer eae6f0427c Fix display of types in GPDB. 2017-08-31 09:57:27 +01:00
Harshal Dhumal dbf760c6e7 Improve datamodel validations for default Validator if user (developer) do not implement validate function in datamodel. Fixes #2670 2017-08-31 09:54:31 +01:00
Murtuza Zabuawala 52840d68a8 Fix RE-SQL for triggers with a single arg. Fixes #2668 2017-08-31 09:39:09 +01:00
Teng Zhang 821442ed8f GPDB compatibility fixes:
When connected to a Greenplum database server
- Hide items that not work with GPDB, such as Triggers, FDW, FTS_*, etc
- Tables/Views/Catalogs/Language node can expand correctly
- Views/Languages/Catalogs can show properties dialog with correct information
- Show a greenplum icon at the server node

Teng Zhang & Hao Wang
2017-08-30 11:18:14 +01:00
Harshal Dhumal 048205ead5 Rename the debugger XSS test function to 'a_test_function' to ensure it appears near the top of the tree and not off-screen.
This should not be a permanent fix (the test should be able to scroll the treeview), but works for now to stop tests failing.
2017-08-30 11:12:27 +01:00
Surinder Kumar 7835da267b Allow pgAdmin to run with config database versions from the future. Fixes #2664 2017-08-29 15:03:02 +01:00
Harshal Dhumal ceb9438000 Cleanup feature tests. Fixes #2586 2017-08-29 14:57:56 +01:00
Murtuza Zabuawala 401e13ca65 Fixed issue where 'backend_type' column is exist for database server version greater than 10.
Issue is regression of RM #2597.
2017-08-28 16:18:05 +05:30
Harshal Dhumal b1ad89fb4a Using the proper python syntax to fetch the default binary path for
different servers types.
2017-08-26 09:59:57 +05:30
Ashesh Vashi 6b727c43b9 Define the utility path lable, and help message for the Greenplum
database server, shown in the preferences dialog.

Also, fixed the issue, when server type is not defined in the
DEFAULT_BINARY_PATHS, in the configuration.
2017-08-25 21:35:57 +05:30
Murtuza Zabuawala 74db837417 Allow queries to be cancelled from the dashboard, and display additional info in the subnode control. Fixes #2597 2017-08-25 16:57:33 +01:00
Teng Zhang 46c5df4e7b Greenplum specific DDL and Dashboard display changes.
Initial patch by Sarah McAlear<smcalear@pivotal.io>.
2017-08-25 17:53:03 +05:30
Murtuza Zabuawala d3babd78aa Fixes #2560 - View is not fully qualified in Trigger definition. 2017-08-25 17:45:20 +05:30
Surinder Kumar f711336a6b Add package run scripts to allow to run the webpack in watch mode, also
added '--progress' option to make it more interactive.
2017-08-25 17:26:56 +05:30
Wenlin Zhang 5dd375dd20 Fix the feature tests failuers. 2017-08-25 17:16:36 +05:30
Dave Page 8579909558 Ensure the SERVER_MODE changes don't break the PIP build. 2017-08-25 12:17:47 +01:00
Dave Page 5c016f0993 Update docs to more accurately reflect the SERVER_MODE config requirements. 2017-08-25 12:13:03 +01:00
Dave Page a65f7b330b Ensure builtins.SERVER_MODE is handled if running setup.py standalone. 2017-08-25 11:56:44 +01:00
Dave Page 507d8b3fe4 Regression tests aren't run under the runtime, so no need to check for builtins.SERVER_MODE's existence. 2017-08-25 11:56:10 +01:00
Dave Page 0e5ea58294 Ensure builtins.SERVER_MODE is present so the docs build cleanly. 2017-08-25 11:19:27 +01:00
Dave Page f195b18f2d Ship with pre-configured paths that can work in both Server and Desktop modes out of the box. Fixes #2662
Ship the web code using server mode with appropriate paths by default and enable the runtime to override the mode, and force into desktop changing the appropriate paths to user-specific ones.

Note that this change will likely cause more advanced users to have to tweak configs.

RPMs will also need changes to create /var/lib/pgadmin and /var/log/pgadmin, owned by the webserver account.
2017-08-25 10:54:28 +01:00
Dave Page fb9eee47bd Bump the version number for 2.0. Let's get testing started ASAP! 2017-08-25 10:18:42 +01:00
Navnath Gadakh bd04cfaaa8 Properly cleanup after running the FTS test cases. 2017-08-25 09:32:46 +01:00
Akshay Joshi fe6e4686a2 Unable to add/update variables for columns of a table. Fixes #2659 2017-08-23 17:11:30 +05:30
Surinder Kumar ee20a10e94 Syntax error while saving changes for start/end time, weekdays, monthdays, month, hours, minutes while updating the pgAgent Job. Fixes #2657. 2017-08-23 14:05:54 +05:30
Surinder Kumar cb9a05a7e7 Datetimepicker will expand from bottom instead of Top, because of that user won't be able to select start and end time properly. Fixes #2656 2017-08-23 11:26:24 +05:30
Sarah McAlear b585063a26 Refactor keyboard shortcut functions in the query tool. Fix some incorrect keycodes and update docs.
Initial work by Sarah & Violet @ Pivotal, with additional tweaks by Murtuza @ EDB.
2017-08-21 15:27:29 +01:00
Murtuza Zabuawala 2e2ca26020 Ensure role names are escaped in the membership control. Fixes #2606 2017-08-21 14:00:33 +01:00
Murtuza Zabuawala 654326a0d1 Update CodeMirror version. Fixes #1697. Fixes #2168. Fixes #2447. Fixes #2562. 2017-08-21 13:43:41 +01:00
Murtuza Zabuawala d757d8698d Fix connection string validation for pgAgent jobs. Fixes #2655 2017-08-21 13:20:07 +01:00
Surinder Kumar 6d7b54eb62 Update datetime picker. Fixes #2654 2017-08-21 13:17:35 +01:00
Atul Sharma e6223c9a49 Fixes #2567 - Use the proper database connection to fetch the default
prileges in the properties tab of the database.

Reviewed by: Murtuza Zabuawala
2017-08-18 09:15:57 +05:30
Violet Cheng d527769bf8 Extract the generate_url(..) function from node.js, and collection.js 2017-08-17 21:43:07 +05:30
Murtuza Zabuawala e9b80dae9c User can not add New Server through Quick links. Fixes #2634 2017-08-17 18:14:06 +05:30
Sarah McAlear dee5186f65 Fixed alertify notification messages where checkmark box disconnected from frame. Fixes #2644 2017-08-17 17:54:12 +05:30
Surinder Kumar c7686dee05 Unset compression ratio if it is an empty string in Backup module. Fixes #2582 2017-08-17 16:35:42 +05:30
Surinder Kumar bff48e0b2d Fixed the path reference of load-node.gif which was referencing to vendor directory. Fixes #2646 2017-08-17 15:27:09 +05:30
Murtuza Zabuawala 2df4625ce0 1) Connection Type cell was not honouring to 'Kind' option in Subnode control.
2) Kind option was not saved properly
3) User was not be able to update Kind option in edit mode.

Fixes #2633
2017-08-17 15:00:08 +05:30
Murtuza Zabuawala 2c6c4a16ce Use dict based data instead of 2d-array in Type module as we are adding keys on the fly.
Reviewed By: Harshal Dhumal
2017-08-17 13:07:39 +05:30
Neel Patel deb5475b98 On certain linux operating systems, Qt application exits with an error
message such as 'X Error: BadDrawable'.

In order to resolve the issue, we need to let the Qt know not to load
the MIT-SHM extension.

Reference:
https://iwf1.com/quick-fix-one-kdes-common-xorg-errors-x-error-baddrawable/
2017-08-09 16:52:43 +05:30
Khushboo Vashi c4ca781ce2 Fixed some UX issue with the Import/Export tool.
- Couldn't click on the filename control once gets an error.
- Encoding is not in alphabetical order.
2017-08-09 16:52:43 +05:30
Hao Wang 5141debae7 UX improvements of the history in the query tool.
- Added copy button for query text.
- Historical queries are binned/grouped by day.

Patch By: Hao Wang, Sarah McAlear
2017-08-09 16:52:43 +05:30
Surinder Kumar 33bd9d4782 Enable source maps for debugging purpose in all webpack modules
(except for vendor, and codemirror).
2017-08-09 16:52:43 +05:30
Ashesh Vashi 845025db8f Some cosmetic changes.
- Loading 'pgadmin' as 'sources/pgadmin', as found under the 'sources'
  reference directory to be consistent with other files.
- Removed the 'pgadmin' reference from the base.html template.
- Renamed 'pgadmin.slickgrid.editors.js', and
  'pgadmin.slickgrid.formatters.js' as 'editors.js', and 'formatters.js'
  respectively, as they're already in the 'pgadmin/static/js/slickgrid'
  directory.
- Removed the duplicate entry of 'translations' from the webpack.shim.js
2017-08-09 16:52:12 +05:30
Akshay Joshi e418cb8387 Changed the mapping of cell from 'numeric' to 'integer' for integer control as numeric cell has been removed from the code. Fixes #2631 2017-08-07 14:02:59 +05:30
Akshay Joshi 801a05891e Set the database name to blank('') when job type is set to batch, while creating pgAgent job. Fixes #2620 2017-08-04 19:31:17 +05:30
Surinder Kumar 06a65ecf71 Added missing pgagent file in webpack.config.js Fixes #2617 2017-08-04 17:39:05 +05:30
Murtuza Zabuawala ef48c2ed91 Fixed issue in query tool where messages were not displaying from functions/procedures properly. Fixes #2555 2017-08-04 15:50:39 +05:30
Murtuza Zabuawala bebfc62721 Fixed collation tests on Windows, replace use of default 'POSIX' collation with 'C' collation for testing. Fixes #2501 2017-08-03 16:46:20 +05:30
Murtuza Zabuawala 6717aff8f5 Domain create dialog do not open and Font size issue in Security label control. Fixes #2616 2017-08-01 16:37:17 +05:30
Akshay Joshi e506fa1dbe Improved alertify notification logic. Remove AlertifyWrapper class and extend notification methods in alertify itself. 2017-07-31 18:59:44 +05:30
Akshay Joshi a7f58e2b92 1) Added partition module in webpack config.
2) Fixed missing logic of partition from primary_key.js and unique_constraint.js as this two files are newly created for webpack.
3) Changed the node name from 'check_constraint' to 'check_constraints'. Also changed the same in test case url.
2017-07-31 18:25:04 +05:30
Ashesh Vashi bdefdf5d4e Requests for statistics were not stopped even when Dashboard panel is
closed. It is a regression of webpack.
2017-07-31 16:48:52 +05:30
Surinder Kumar 6d5417709c Moved the javascripts of different modules from 'templates' to 'static' directory.
Moving the javascripts for the following modules:
 - About
 - Browser nodes
 - Dashboard
 - FileManager
 - Vendor/snap.svg
 - Preferences
 - Settings
 - Backup
 - Datagrid
 - Debugger
 - Sqleditor
 - Grant Wizard
 - Import & Export
 - Maintenance
 - Restore and
 - User Management
2017-07-27 17:25:08 +05:30
Harshal Dhumal 831c614a60 Store the file dialog view on toggle. 2017-07-26 14:35:43 +01:00
Murtuza Zabuawala af26d983e5 Fixup tests following label changes. 2017-07-26 13:45:44 +01:00
Harshal Dhumal 97cd74a373 Default the file browser view to list, and make it configurable. Fixes #2579 2017-07-26 13:09:52 +01:00
Khushboo Vashi d1e7254fbd Handle control visibility properly in javascript strict mode. 2017-07-26 12:55:46 +01:00
Murtuza Zabuawala 1fa9648a21 Update keyboard shortcuts per discussion. Also, make the labels platform sensitive. 2017-07-26 12:50:42 +01:00
Harshal Dhumal d339d6b816 Do not dump the session data on the disk on every request.
Session object is updated, everytime a request is being served, and
that was forcing the session object dumped on the dist on every request.

On windows, it was causing issues on slower system on startup. Because -
windows file system locks the file, when it is opened by any
application. And, frequent requests on the pgAdmin main UI rendering
was causing issues, because of that.

In order to resolve the issue, we will not write the session data on
disk for every request, but - only after certain delay (in seconds),
from it was last written. It can be configured using the attribute
'PGADMIN_SESSION_DISK_WRITE_DELAY' in the configuration file,
default vaule for the delay is 10.
(i.e. 10 seconds)
2017-07-25 15:52:32 +05:30
Murtuza Zabuawala 178d583bcd Fix paths under non-standard virtual directories. Fixes #2563 2017-07-25 10:15:18 +01:00
Murtuza Zabuawala 617e9dbb3a Allow queries to be cancelled from the dashboards. Fixes #1812 2017-07-24 12:13:24 +01:00
Joao Pedro De Almeida Pereira fe95b7670b Ensure the appropriate entry is focussed when entering the history tab. 2017-07-24 11:46:06 +01:00
Dave Page eb5bb5fcc0 Update yarn.lock 2017-07-21 16:17:24 +01:00
Sarah McAlear 2ebb409999 Fix test assertion. 2017-07-21 16:16:41 +01:00
Surinder Kumar 03657df82a Ensure babel-polyfill is loaded in older qWebKits. Fixes #2593 2017-07-21 16:15:03 +01:00
Harshal Dhumal 7182b59976 Ensure arrow keys work correctly when the pane is focused instead of the tab in the query tool history. 2017-07-21 13:33:59 +01:00
Atul Sharma 70418144cf Add a field to the Server Dialogue allowing users to specify a subset of databases they'd like to see in the treeview. Fixes #1918 2017-07-21 12:44:57 +01:00
Murtuza Zabuawala acaa79cf6b Fix disconnection of new databases. Fixes #2594 2017-07-21 11:11:03 +01:00
Murtuza Zabuawala b313cbce0d Fix regression tests after Dave broke them. 2017-07-21 10:57:29 +01:00
Surinder Kumar a49a3103e2 Prevent the Werkzeug reloader from causing a "double start" at init time. 2017-07-21 09:46:30 +01:00
Surinder Kumar ede6765f6b Add an editorconfig file to help maintain coding standards. 2017-07-21 09:39:23 +01:00
Sarah McAlear 86dc1e81f1 Move Query Tool keyboard shortcut code into a new module and add tests. 2017-07-20 22:22:25 +01:00
Matthew Kleiman e29cd8d83d Improve the history UI. 2017-07-20 20:50:37 +01:00
Matthew Kleiman 21bfcd83f4 Allow navigation of query history using the arrow keys. Fixes #2590 2017-07-20 20:47:40 +01:00
Murtuza Zabuawala 64f3a559ab Add the Flask-Paranoid module for a little extra, well, paranoia in web mode. Fixes #2584 2017-07-20 18:04:33 +01:00
Dave Page 83ac1f3555 Remove debug logging of the URL map which is extremely long now, and not of a great deal of use. 2017-07-20 16:15:53 +01:00
Surinder Kumar ae3acbdbbc Fix webpacking of loading icon. 2017-07-20 13:38:16 +01:00
Harshal Dhumal 54882e061c Don't attempt to render binary data in the query tool result grid. Fixes #2080. Fixes #2074. 2017-07-20 13:09:47 +01:00
Surinder Kumar 2eb151c2d9 More webpack cleanup - add comments liberally and rename lib.css to style.css 2017-07-20 12:52:15 +01:00
Akshay Joshi 4d4da67247 Fix regressions introduced by PG10's partitioning code. Fixes #2043. Fixes #2324. 2017-07-20 12:49:40 +01:00
Surinder Kumar dfa877262d Webpacking cleanups 2017-07-19 15:03:21 +01:00
Surinder Kumar 6046be7fba Fix typo in filename. 2017-07-19 11:57:11 +01:00
Dave Page 1e1a9f2cf4 Add controls and shortcuts for commenting/uncommenting code in the SQL Editor. Fixes #2456.
Take the opportunity to tidy up the menus and add access keys to appropriate buttons.
2017-07-19 11:43:45 +01:00
Surinder Kumar b90d368ee7 Resolve an issue where collection nodes sometimes wouldn't sort properly. 2017-07-18 16:31:05 +01:00
Surinder Kumar 659aeeb58e Add a missing dependency. 2017-07-18 16:30:18 +01:00
Murtuza Zabuawala bab3da24e6 Support SSL in the regression tests. Fixes #2170 2017-07-18 15:23:11 +01:00
Surinder Kumar 6396b8ce18 Add missing new files from the previous commit. Ooops. 2017-07-18 15:14:59 +01:00
Surinder Kumar 4a91bcde30 Webpack all the things! Fixes #2135
This significantly speeds up loading of the application; in an average of 3 tests, v1.6
loaded in 11.5s in the runtime on a Mac, whilst the webpacked version of the code
loaded in 5.53s.
2017-07-18 15:13:17 +01:00
Dave Page d04ac7656a Remove change made for debugging and committed in error. 2017-07-17 15:19:30 +01:00
Khushboo Vashi c546182789 Modify the runtime to use time-based timeouts rather than retry based. Fixes #2556
This allows for slow vs. fast connection failures (e.g. an active rejection vs. no response).
2017-07-17 15:17:58 +01:00
Harshal Dhumal 3942461c50 Correct for malformed query generated when using custom type. Fixes #2544 2017-07-17 11:14:34 +01:00
Khushboo Vashi 059d671af5 Fix typo 2017-07-17 10:59:29 +01:00
Neel Patel dc6a1936f5 Tidy up tab styling. Fixes #2557 2017-07-17 10:58:17 +01:00
Harshal Dhumal 8bbcf0ab36 Fix handline of large file uploads and properly show any errors that may occur. Fixes #2153 2017-07-17 10:51:26 +01:00
Neel Patel dcc74af87b Stop tool buttons from changing their styling unexpectedly. Fixes #2559 2017-07-17 10:45:16 +01:00
Murtuza Zabuawala 3f83780049 Remove the comma from PIDs in the statistics panel. 2017-07-17 10:18:31 +01:00
Neel Patel 1fe0d51925 Prevent the tab bar being hidden when detached tabs are being closed. Fixes #2558 2017-07-17 10:14:40 +01:00
Harshal Dhumal 07aa74eaf5 Show tablespace on partitions. Fixes #2551 2017-07-17 09:50:18 +01:00
Ashesh Vashi 4eefc52748 [PostgreSQL 10] Fixed the Pause/Resume Replay of WAL files for PostgreSQL 10. Fixes #2566 2017-07-14 18:39:19 +05:30
Murtuza Zabuawala 822e62c238 Fix privileges control on IE 10/11. Fixes #1166 2017-07-14 12:45:09 +01:00
Khushboo Vashi da67963094 Don't continually poll for graph data on the dashboard if the server is disconnected. Fixes #1165 2017-07-14 12:42:29 +01:00
Mammoth Power de06e63334 Fix a compiler error with older compilers. 2017-07-11 17:22:20 +01:00
Dave Page 68a6c496d9 Straighten line 2017-07-11 13:20:16 +01:00
Dave Page 374bf79911 Fix proxy support with Qt 5.9+ 2017-07-11 11:48:13 +01:00
Dave Page dad6031bd6 Revert "Ensure dependencies are packaged in the tarball"
This reverts commit 6ad4a623c4.

ENOCOFFEE error
2017-07-11 09:23:57 +01:00
Neel Patel c93aa3810d Fix a compiler error with older compilers. 2017-07-11 09:14:53 +01:00
Dave Page 6ad4a623c4 Ensure dependencies are packaged in the tarball 2017-07-11 09:12:09 +01:00
Surinder Kumar 2bfe640a08 Fix alignment of Object > delete/drop & properties icons 2017-07-10 16:14:40 +01:00
Ashesh Vashi b095d1f33a Ensure the initial password is properly hashed during setup in web mode. Fixes #2492 2017-07-10 16:08:35 +01:00
Akshay Joshi f06c3578f6 Fix drop/drop cascade for partitioned tables. Fixes #2550 2017-07-10 16:02:32 +01:00
Harshal Dhumal 7aa7ea0fe2 Couple of typos in the release notes. 2017-07-10 15:18:48 +01:00
Dave Page ea5dfe23a0 Bump version numbers prior to release. 2017-07-10 14:56:20 +01:00
Karen Blatchley 4bfb31b03b Release notes for 1.6. 2017-07-10 14:52:45 +01:00
Akshay Joshi ed3cb7df41 Handle partitioned tables created "OF TYPE". Fixes #2545 2017-07-10 14:16:30 +01:00
Murtuza Zabuawala 6d3d2cd458 Handle un-mounted drives correctly on Windows. Fixes #1999 2017-07-10 14:04:57 +01:00
Surinder Kumar 33e56272ca Fix IE11 alert layout again. 2017-07-10 13:49:47 +01:00
Khushboo Vashi ecd95141f3 Refresh nodes correctly when there is a single child that is updated. Fixes #2532 2017-07-10 13:25:23 +01:00
Dave Page 55b1e7b186 Update Mingw build for changes in QtWebKit 2017-07-10 12:12:25 +01:00
Dave Page 2dfa622357 Fix history font on IE. 2017-07-10 10:25:27 +01:00
Murtuza Zabuawala 907c5fe198 Use the correct font for alerts on IE. 2017-07-10 10:07:23 +01:00
Sarah McAlear c02ac2ac66 Fix history view in IE11. 2017-07-10 10:03:04 +01:00
Joao Pedro De Almeida Pereira d56f1d847c Update dialogue error styling to match alerts 2017-07-10 09:36:10 +01:00
Dave Page ec739b3392 Revert "Open query tool and debugger windows in new tabs by default."
This reverts commit 1a6fe946ce.

This is going to break the regression tests, so reverting it for now.
2017-07-07 17:06:12 +01:00
Dave Page 1a6fe946ce Open query tool and debugger windows in new tabs by default. 2017-07-07 16:53:45 +01:00
Murtuza Zabuawala 08e874a026 Fix alert animation on IE11 2017-07-07 16:50:47 +01:00
Harshal Dhumal d151bdb4cd Fix handling of CREATE TABLE OF <type>. Fixes #2534 2017-07-07 16:34:33 +01:00
Joao Pedro De Almeida Pereira 815c4b4c45 Improve spacing around delete icons in backform tables. 2017-07-07 16:06:51 +01:00
Murtuza Zabuawala acd3568f06 Fix the formatting of the ROWS option for functions etc. Fixes #2537 2017-07-07 15:57:43 +01:00
Sarah McAlear 8646e9e404 Enable pretty html output of our karma test results. While running yarn test:karma, visit localhost:9876/debug.html to see test output. 2017-07-07 15:54:42 +01:00
Harshal Dhumal fc78202600 Fix clear history. 2017-07-07 15:51:06 +01:00
Akshay Joshi fae185ff66 Partitioned table does not present in grant wizard. Fixes #2543 2017-07-07 15:15:15 +05:30
Akshay Joshi e793413d76 Fixed issue by adding extra check for 'relkind' column 2017-07-07 12:33:58 +05:30
Akshay Joshi c2fb0394bf Added support of Declarative Partitioning (Range, List) for PostgreSQL 10.
This allows the user to create partitioned table and it's partitions.

  - Edit partitions, Create/Listing of constraints, rules, triggers under partitions. (Implemented by Harshal)
  - Updating browser tree node when create/attach/detach partitions from table dialog.(Implemented by Ashesh)
2017-07-07 11:55:55 +05:30
Murtuza Zabuawala ca7fe9a520 Ensure the save password option is enabled when creating a server. Fixes #2540 2017-07-06 13:33:46 +01:00
George Gelashvili e5bedf088e In subnodes without dropdowns, the rows had smaller height, making them appear unintentionally different than those with dropdowns. Make them the same. 2017-07-06 13:11:40 +01:00
Matthew Kleiman e2cbaaef71 UI tweaks for the query history. 2017-07-06 13:08:29 +01:00
Dave Page 1291841d98 Remove unused minimisation code 2017-07-06 13:04:13 +01:00
Dave Page 592c70e655 Add some useful make targets for bundling and linting. 2017-07-06 13:02:43 +01:00
Murtuza Zabuawala 9de6c08d28 Allow use of Shift+Tab to un-indent selected text. Fixes #1988 2017-07-05 14:20:19 +01:00
Murtuza Zabuawala 2bb01e2d1a Fix alert layout when more than one are shown at once. 2017-07-05 12:04:48 +01:00
Harshal Dhumal 76939e4f63 Prompt the user to save dirty queries rather than discard them for a more natural workflow. Fixes #1972 2017-07-04 23:39:10 +01:00
Murtuza Zabuawala b211eb199c Improve styling for alerts by highlighting the icon. 2017-07-04 12:03:32 +01:00
Khushboo Vashi 66b101fe4c Resolve a number of issues with domains and domain constraints. Fixes #2529 2017-07-04 11:52:58 +01:00
Murtuza Zabuawala 0aa763b706 Remove unnecessary whitespace from stored procedure SQL. Fixes #2146 2017-07-03 16:32:19 +01:00
Murtuza Zabuawala 5c7dcaba81 Allow debugging of functions in packages. Fixes #1948 2017-07-03 16:30:12 +01:00
Khushboo Vashi 070a9c077e Allow breakpoints to be set on triggers on views. Fixes #2528 2017-07-03 16:15:42 +01:00
Khushboo Vashi f6b879233c Fix deletion of table rows with the column definition having NOT NULL TRUE and HAS NO DEFAULT VALUE. Fixes #2527 2017-07-03 15:49:59 +01:00
Murtuza Zabuawala 2d5e55964a Improve the debugger's default page layout, and prevent attempts to continue debugging after the user has stopped. Fixes #2512, Fixes #2511 2017-07-03 15:14:45 +01:00
Harshal Dhumal 1977a5fcda Fix clipboard handling with large datasets. Fixes #2489 2017-07-03 11:19:02 +01:00
Harshal Dhumal 4e21cdb64b Fix a syntax error in the SQL Editor. 2017-07-03 11:02:20 +01:00
Murtuza Zabuawala 1e427890de Fix an issue where duplicate entry is made of successful executed query, one with status message and one without status message. 2017-07-03 11:00:42 +01:00
Khushboo Vashi 7c09a8f827 Fix typo that caused a layout issue with the Edit Grid. 2017-06-30 12:58:47 +01:00
Dave Page ffb00b502a Fix a couple of gripes from the JS linter on Windows. 2017-06-30 10:34:06 +01:00
Joao Pedro De Almeida Pereira f2d2075d81 Update alertify alerts to use the styling defined in the styleguide (missed some files in the original commit). 2017-06-30 10:23:12 +01:00
Joao Pedro De Almeida Pereira 2a30a86e7d Update alertify alerts to use the styling defined in the styleguide. 2017-06-30 10:21:05 +01:00
Joao Pedro De Almeida Pereira ba3ab7b322 Add support for SCSS building in webpack. 2017-06-30 10:15:44 +01:00
Khushboo Vashi 501120701e Allow the dashboard panel to be closed. Fixes #2506 2017-06-30 10:11:34 +01:00
Harshal Dhumal 2d65312910 Improve speed of Select All in the results grid. Fixes #2522 2017-06-30 09:54:31 +01:00
Akshay Joshi c98b64fd82 1) Edit cellEditing function, in some cases grid object is undefined.
2) Modify SubNodeCollectionControl, so that user can pass custom backgrid row.
3) Handling of visible parameter in SubNodeCollectionControl.
4) Customise title and delete message for Delete Cell.
5) Added Backgrid.Extension.Select2DepCell and moved Backgrid.Extension.StringDepCell from user management to backgrid.pgadmin.js.
2017-06-29 19:01:29 +05:30
Harshal Dhumal 7389744ecf A number of minor cleanups to the recent changes to the query tool. 2017-06-28 09:49:39 -04:00
Khushboo Vashi 301798d87a Fix encoding issue when saving servers. Fixes #2518
Patch by Khushboo, based on a suggested fix from Ladislav Jech
2017-06-28 09:44:32 -04:00
Dave Page ed5c74affe Fix image size. 2017-06-27 17:09:52 -04:00
Murtuza Zabuawala f0066d6006 Update preferences docs. 2017-06-27 17:04:56 -04:00
Murtuza Zabuawala a9fa093d4b Allow non-superusers to debug their own functions and prevent them from setting global breakpoints. Fixes #2162
Based on a patch from Kit Yam Tse
2017-06-27 16:58:07 -04:00
Joao Pedro De Almeida Pereira 7f55412059 Overhaul the query history tab to allow browsing of the history and full query text. Fixes #2282
Patch by Joao and the team at Pivotal.
2017-06-27 10:55:57 -04:00
Dave Page e413186d23 Add stylesheet to override brace matching styles, missed from the feature commit. 2017-06-27 10:41:26 -04:00
Dave Page 96412b3219 Revert "Allow the user to close the dashboard panel. Fixes #2506"
This reverts commit a87ee6d059.
2017-06-27 10:35:43 -04:00
Murtuza Zabuawala 1b49bb8b22 Add preferences to enable brace matching and brace closing in the SQL editors. Fixes #2513 2017-06-27 09:57:38 -04:00
Khushboo Vashi a87ee6d059 Allow the user to close the dashboard panel. Fixes #2506 2017-06-27 09:21:24 -04:00
Harshal Dhumal c65158312d Use on-demand loading for results in the query tool. Fixes #2137
With a 27420 row query, pgAdmin III runs the query in 5.873s on my laptop. pgAdmin 4 now takes ~1s.
2017-06-27 09:03:04 -04:00
Atul Sharma 15cb9fc35b Add support for the hostaddr connection parameter. This helps us play nicely with Kerberos/SSPI and friends. Fixes #2191 2017-06-26 15:48:59 -04:00
Surinder Kumar 3f4781cdcb Un-break query tool feature tests. 2017-06-26 15:25:05 -04:00
Khushboo Vashi 27bc5c803f Ensure saved passwords are effective immediately, not just following a restart when first saved. Fixes #1920 2017-06-26 07:55:34 -04:00
Khushboo Vashi d4e77deda4 Ensure revoked public privileges are displayed in the RE-SQL for functions. Fixes #2507 2017-06-26 07:50:39 -04:00
Surinder Kumar cfb4b11573 Use client-side url_for in the sql editor and data grid modules. 2017-06-26 07:43:03 -04:00
Khushboo Vashi 6b6d3369b3 Wait for the Tools menu to be populated when running the feature tests, instead of failing.
Fix by Khushboo, based on Harshal's previous work.
2017-06-23 14:07:31 +01:00
Dave Page 92b1b1365e Tidy up About box formatting, 'cos it's been annoying me for ages. 2017-06-23 10:21:40 +01:00
Dave Page 6fabf4764b Add access keys for top level menus. 2017-06-23 09:58:46 +01:00
Murtuza Zabuawala 7a4945ff9e Fix removal of sizes from column definitions. Fixes #2155 2017-06-23 09:42:46 +01:00
Matthew Kleiman 9af29364c7 Fix cell selection window alignment for the updated SlickGrid. 2017-06-23 09:37:58 +01:00
Matthew Kleiman 94aa5487fb Update Slickgrid to 2.3.7. As this version includes all the features we need, it can be moved out of the vendor directory and we'll use yarn to pull it in. 2017-06-23 09:35:56 +01:00
Matthew Kleiman b98fcaa829 Ensure the relevant Makefile targets install node modules before running. 2017-06-23 09:23:31 +01:00
Khushboo Vashi 25282f3094 Additional preference fix. 2017-06-22 14:55:45 +01:00
Murtuza Zabuawala 0ab637c7ab Fix import/export to work as expected with TSV data. Fixes #1934 2017-06-22 13:57:32 +01:00
Khushboo Vashi 33e75d24f8 Fix preferences handling for utilities. 2017-06-22 12:18:56 +01:00
Murtuza Zabuawala 137bae1b04 Ensure default values are honoured when adding/editing columns. Fixes #1860 2017-06-22 12:11:02 +01:00
Ashesh Vashi d26337a1ba Moved the javascripts of the following browser node modules to the
'static' directory from 'templates' in the respective module directory:
- Server Group
- Server
- Database
- Schema
- Cast
- Event trigger
- Extension
- Foreign data wrapper
- Language
- Catalog Object
- Collation
- Domain Constraint
- Domain
- Foreign server
- FTS Configuration
- FTS Dictionary
- FTS Parser
- FTS Template
- Function
- Procedure
- Trigger Function
- Package
- Sequence
- Catalog
- Schema
- Synonym
- Table
- Type
- Materialized View
- View
- pgAgent Modules
  + Job (pga_job)
  + Schedule (pga_schedule)
  + Steps (pga_jobstep)

Added new dynanic modules for listing the supported server types, and
current user information.

NOTE: We've not yet moved the javascripts for the children of the table
module.
2017-06-22 15:58:32 +05:30
Khushboo Vashi 67fd119de8 Maintain a client-side cache of preference values, populated using an async call. Fixes #2487 2017-06-21 17:09:59 +01:00
Murtuza Zabuawala b9f6fb9545 Update MatView and pgAgent modules to work with recent integer/numeric changes. Fixes #2504 2017-06-21 17:03:43 +01:00
Murtuza Zabuawala b9736cbd74 Handle missing/dropped synonyms gracefully. Fixes #2503 2017-06-21 16:59:43 +01:00
George Gelashvili 5cfa22cf23 Fix React to work with QtWebKit
We learned that the underlying issue was related to react-dom's SyntheticEvent.augmentClass function being undefined.

This seems to be caused by attempted property assignment after the SyntheticEvent had been replaced by a Proxy of itself. This works fine in Chromium et al, but QtWebKit doesn't deal with Proxy Event objects well.
Moving the augmentClass definition and assignment up above the Proxy stuff resolves the issue in a PR to React: https://github.com/facebook/react/pull/10011
2017-06-21 11:25:22 +01:00
George Gelashvili a45b87d9b7 Vendorize React. This is required at this time because we need to modify it to work with QtWebKit.
The patch to do that has been submitted upstream; if accepted, we can un-vendorize again.
2017-06-21 11:20:02 +01:00
Shruti B Iyer 281b67952a Consolidate selection colors in the drop down menu and browser tree to match the light blue agreed upon in the styleguide. 2017-06-21 11:11:49 +01:00
Murtuza Zabuawala f0202228d0 Increase the default size of the Grant Wizard to enable it to properly display privileges at the default size on smaller displays. Fixes #2013 2017-06-21 11:08:23 +01:00
Dave Page bf5a2252af Install the Yarn deps before trying to bundle. 2017-06-20 12:06:35 +01:00
Dave Page 9829d74a04 Correct the v10 template path. 2017-06-20 12:04:13 +01:00
Dave Page c5616c7869 Run yarn tasks where required to run the tests. 2017-06-20 11:58:54 +01:00
Dave Page bd917f2348 Create a runner for the feature tests. 2017-06-20 11:51:22 +01:00
Murtuza Zabuawala 34518d328e No need for the menu icon to link to the homepage, as pgAdmin is a SPA. Fixes #2479 2017-06-20 10:28:35 +01:00
Murtuza Zabuawala d2ba57c1ab Properly handle bytea[], and 'infinity'::real/real[]. Fixes #2498. Fixes #2502. 2017-06-20 10:19:11 +01:00
Neel Patel a21dad4c45 Fix runtime support under Qt4 2017-06-16 11:26:31 +01:00
Khushboo Vashi 1ee555e468 Ensure the feature tests use the correct test settings database. Fixes #2486 2017-06-16 10:17:38 +01:00
Neel Patel 0056a94115 Add support for detachable tabs to the runtime.
This allows the Query Tool, Debugger and web browser tabs to be moved to different monitors as desired.

Fixes #1344
2017-06-16 09:57:19 +01:00
Ashesh Vashi 900ccebb50 Using client-side implementation of 'url_for' in the settings module. 2017-06-16 08:57:23 +05:30
Ashesh Vashi 5c140b3f58 Using client-side 'url_for' implementation in the user management
module.
2017-06-16 00:16:30 +05:30
Ashesh Vashi e65b605912 Using client-side 'url_for' implementation in the import/export module. 2017-06-16 00:00:17 +05:30
Ashesh Vashi 07580b8444 Using client-side 'url_for' implementation in the maintenance module. 2017-06-15 23:50:53 +05:30
Dave Page 5d45dee686 Fix Yarn tasks for Windows 2017-06-15 15:32:07 +01:00
Johan Van de Wauw 827aa72e99 Fix a typo in the config file 2017-06-15 15:18:59 +01:00
Surinder Kumar 2a87585665 Fix script options which were inadvertently broken in the query tool tab naming patch. 2017-06-15 12:19:47 +01:00
Murtuza Zabuawala d70c3003d3 Add double precision[] tests to the query tool. 2017-06-15 11:54:17 +01:00
Murtuza Zabuawala 8376d33d77 Fix canceling of Grant Wizard on Windows. Fixes #2142 2017-06-15 11:42:13 +01:00
Dave Page 6938fbafb5 Add some more Makefile targets for running different test suites. 2017-06-14 14:11:51 +01:00
Surinder Kumar fdc9eed514 Ensure text editors render in an appropriate place on the results grid. Fixes #2477 2017-06-14 12:18:27 +01:00
Surinder Kumar 2b4a8ed89c Un-break the feature tests. Fixes from Surinder and myself. 2017-06-14 09:59:11 +01:00
Joao Pedro De Almeida Pereira 4b846ae4e0 Fix the JS Bundler test to work when there are multiple servers defined in a test run. 2017-06-14 09:37:20 +01:00
Dave Page cb97722fc3 Temporarily disable the Javascript bundler test until it handle more than one run. 2017-06-13 14:21:41 +01:00
Surinder Kumar 57d866f7b7 Use a more sensible name for Query Tool tabs. Fixes #2482 2017-06-13 11:34:24 +01:00
Ashesh Vashi 467825c2d1 Package 'mock' is required for testing, and for Python < 3.3 only. 2017-06-13 15:57:56 +05:30
Akshay Joshi 794b70daea Fixed issue of opening file manager dialog from Query Tool. 2017-06-13 15:48:12 +05:30
Ashesh Vashi 903389d7b7 Required mock package for python < 3.3.
It was required for the commit:
1208206bc0

Also, do not fetch the scenario-name, when it is not avaiable (but - use
default vaule as the stringified test-case itself).
2017-06-13 15:43:31 +05:30
Joao Pedro De Almeida Pereira a9ce9c9717 Skip a test that uses the COLLATE option on PG versions below 9.1 (e.g. Greenplum). 2017-06-13 10:27:09 +01:00
Khushboo Vashi 3a5fda44e4 Add a shortcut (Ctrl/Cmd + 0 (zero)) to the runtime to allow the zoom level to be reset. Fixes #2485 2017-06-13 10:21:51 +01:00
Shruti B Iyer 1208206bc0 Initial re-vamp of the History tab. 2017-06-13 09:50:41 +01:00
Khushboo Vashi 16a15bf934 Fix the fix for RM2324. 2017-06-13 09:18:44 +01:00
Ashesh Vashi 0243d886c3 Using client-side 'url_for' implementation in the Grant-Wizard module. 2017-06-13 11:47:55 +05:30
Ashesh Vashi f9a3878220 Using client-side 'url_for' implementation in the restore module. 2017-06-13 11:00:17 +05:30
Ashesh Vashi 4a46f7b1eb Using client-side 'url_for' implementation in the backup module. 2017-06-13 10:59:11 +05:30
Ashesh Vashi 1a7c9d5ca1 Using client-side 'url_for' implementation in the module - bgprocess
(background-processes).
2017-06-13 09:18:48 +05:30
Shruti B Iyer f1acad85db Add a missing translation call. 2017-06-12 17:20:40 +01:00
Shruti B Iyer 3f4f8b9e77 Add linting support, and, well, lint. 2017-06-12 16:55:14 +01:00
Shruti B Iyer 659eb1c1e8 Bring React into the tree, and add linting and bundling framework for the JS etc. 2017-06-12 16:51:54 +01:00
Surinder Kumar af43ccfc07 Teach dialogues about Escape to cancel, Enter to Save/OK, and F1 for help. Fixes #1535 2017-06-12 16:43:29 +01:00
Murtuza Zabuawala ec5bc23dfd Allow editing of the WITH ADMIN option of role membership. Fixes #2086 2017-06-12 13:58:51 +01:00
Murtuza Zabuawala 3743c6e86e Refresh the SQL editor view on resize to ensure the contents are re-rendered for the new viewport. Fixes #2078 2017-06-12 13:25:52 +01:00
Murtuza Zabuawala c435d48885 Properly handle trigger functions with parameters. Fixes #2043 2017-06-12 13:19:49 +01:00
Atul Sharma 49cd578816 Fix error on the stats tab with PG10. Also, rename the 10.0_plus template directory to 10_plus to match the new versioning. Fixes #2450 2017-06-12 12:53:09 +01:00
Khushboo Vashi 8bd8ae001b Fix the PostGIS Datatypes in SQL tab, Create / Update dialogues for Table, Column, Foreign Table and Type node. Fixes #2324
Note that this doesn't add full support for PostGIS types to the table/column dialogues, which still can't handle the typmod usage. It does bring support to parity with pgAdmin 3 though.
2017-06-12 12:49:17 +01:00
George Gelashvili 59da69087c Stop ignoring yarn.lock, per discussion with Pivotal team. 2017-06-12 09:16:32 +01:00
Ashesh Vashi fd3ddbeafb Implementation of the client side 'url_for(...)' function.
Created a url_for function module to be used by different javascript
modules to use the same functionality of flask at client side.

A python module can expose the list of endpoints, used by its
javascripts, by overriding the 'get_exposed_url_endpoints(self)'
function.

In this patch, we have modified all the browser modules to use this
function. It will allow us to move the majority of the javascript
modules of browser nodes from templates directory to the static
directory.

TODO::
- Move these javascripts modules to the static directory.
- Use this function in all the applicable javascript modules.
  e.g. tools, miscellaneous modules
2017-06-12 12:01:25 +05:30
Dave Page dea850b503 Tune startup retry loop - try 50 times, with a 100ms pause between each attempt. 2017-06-11 14:38:22 +01:00
Dave Page ef4b8e8c1c Another minor perf tweak for the runtime. 2017-06-11 14:34:49 +01:00
Dave Page f0d287588a Couple of minor performance tweaks. Tests on my Windows VM show a consistent 30% startup time reduction. 2017-06-11 13:56:49 +01:00
Surinder Kumar 49976b1934 Fine tune result grid column sizing now we don't have checkboxes. 2017-06-09 09:24:20 +01:00
Sarah McAlear ee4a847784 Use the correct font for the treeview. 2017-06-09 09:09:39 +01:00
Surinder Kumar 73c6f1ca3b A little leanup of the styling of the edit grid 2017-06-08 17:06:34 +01:00
Harshal Dhumal aa400cbc12 Fix integer/numeric validation on various dialogues. Fixes #2421 2017-06-08 14:59:26 +01:00
Murtuza Zabuawala 3bcbc50525 Fix the handling of double precision[] type. Fixes #1928 2017-06-08 14:50:51 +01:00
Surinder Kumar c9b717ed68 Set focus on the first enabled field when a dialogue is opened. Fixes #1533 2017-06-08 14:37:31 +01:00
Sarah McAlear 01bfa88309 Improvements to the Query Results grid:
- Improve the UI
- Allow copy/paste from sets of rows, columns or arbitrary blocks of cells

Patch by Matt, Shruti, Joao and Sarah @ Pivotal

Fixes #2476
2017-06-08 13:31:36 +01:00
Surinder Kumar 2fddf750e6 Retain column sizing in the query tool results grid when the same query is re-run multiple times in a row. Fixes #1971 2017-06-08 12:41:56 +01:00
Murtuza Zabuawala 678b891ff7 Fix an intermittent error seen during result polling. Fixes #2470 2017-06-08 12:34:14 +01:00
Murtuza Zabuawala b149fe371e Fix various issues with pgAgent job steps and schedules:
1) Error on clicking SQL panel when Schedule OR Step node is selected in browser. Fixes #1888

2) Error while dropping Schedule OR Step node. Fixes #1889

3) Newly created Schedule/Step node was not displaying in browser. Fixes #1890
2017-06-08 12:30:00 +01:00
Surinder Kumar 88737248ab Fix a couple of missing greys. 2017-06-07 16:31:47 +01:00
Surinder Kumar 63c093248d Allow users to remove default values from columns properly. Fixes #2461 2017-06-07 14:33:28 +01:00
George Gelashvili f89aec867a Resolve the PG datatype feature test flakiness and make for a nice buttery crust. 2017-06-07 14:26:42 +01:00
George Gelashvili 8d8e7dab3c Extract row staging into it's own module with tests. 2017-06-07 14:17:10 +01:00
Shruti B Iyer 0d05385585 Update the styling to use the set of grays defined in the WIP style guide. 2017-06-07 13:57:49 +01:00
Murtuza Zabuawala 495a3cedb0 List packages in PPAS 9.2-9.4 when creating synonyms. Fixes #1813 2017-06-07 13:44:36 +01:00
Khushboo Vashi b134ae2cb4 Fix the RE-SQL for for views to properly qualify trigger function names. Fixes #2381 2017-06-07 13:40:11 +01:00
Ashesh Vashi ae80976689 Using the client-side translation using the client-side 'gettext'
implementation.

This is the first step towards 'Avoid creating the javascript modules
using Jinja templates'.
2017-06-07 15:53:05 +05:30
Murtuza Zabuawala 7e9f82bc17 Prevent attempts to debug procedures with variadic arguments. Fixes #1466 2017-06-06 12:58:52 +01:00
Surinder Kumar beda7ebbf2 Add feature tests for the View Data tool. 2017-06-06 12:54:20 +01:00
Murtuza Zabuawala 9803468a77 Properly display security labels on EPAS 9.2+. Fixes #1575 2017-06-06 11:46:49 +01:00
Murtuza Zabuawala cd3484d936 Make $ quoting consistent. Fixes #1525 2017-06-06 11:40:25 +01:00
Surinder Kumar b82e001478 Ensure that boolean checkboxes cycle values in the correct order. Fixes #2448 2017-06-06 11:29:18 +01:00
Murtuza Zabuawala bf06d82870 Fix validation for external and range types. Fixes #1795 2017-06-06 11:24:10 +01:00
Murtuza Zabuawala e6aa3e1494 Fix default values and SQL formatting for event triggers. Fixes #1229 2017-06-06 11:19:40 +01:00
Dave Page 4c2004d479 Correct the validation logic when modifying indexes/exclusion constraints. Fixes #2113 2017-06-06 11:15:51 +01:00
Khushboo Vashi d21cbb8b1f Handle composite primary keys correctly when deleting rows in the Edit Grid. Fixes #2425 2017-06-06 09:58:47 +01:00
Murtuza Zabuawala 4b74a5ff35 Enable dialogue help buttons on Language and Foreign Table dialogues. Fixes #2116 2017-06-06 09:52:44 +01:00
Murtuza Zabuawala 0bc9997a95 Properly refresh the parent node when renaming children. Fixes #2355 2017-06-06 09:50:05 +01:00
Dave Page 9e98ded06c Display and allow toggling of trigger enable/disable status from the trigger dialogue. Fixes #2386 2017-06-05 17:11:21 +01:00
Murtuza Zabuawala 3f150f3f4e Handle procedure flags (IMMUTABLE STRICT SECURITY DEFINER PARALLEL RESTRICTED) properly in RE-SQL on EPAS. Fixes #2280 2017-06-05 17:04:55 +01:00
Murtuza Zabuawala a4d86d24e6 Cache statistics more reliably. Fixes #2357 2017-06-05 17:01:03 +01:00
Dave Page 12fa023c6d Fix a couple of issue descriptions. 2017-06-01 13:00:36 +01:00
Karen Blatchley 54760ef3bb Add documented release notes. 2017-06-01 12:29:37 +01:00
Dave Page 1b23a7912a Fix permissions on some files. 2017-05-31 16:48:09 +01:00
Surinder Kumar 456096092d Avoid re-rendering the edit grid for every row that is pasted. 2017-05-30 16:22:11 +01:00
Neel Patel 6e24cb038a Ensure the runtime works correctly if a Windows user has a proxy server enabled. 2017-05-30 13:17:07 +01:00
Surinder Kumar 1f26953504 Cleanup handling of default/null values when data editting. FIxes #2400 2017-05-27 14:51:02 -04:00
George Gelashvili 10caae4dc6 Increase feature test timeouts. 2017-05-27 14:17:06 -04:00
Dave Page 6abc4c239a Improve docs on patch creation 2017-05-26 16:55:20 -04:00
Murtuza Zabuawala 8aabee352c Import the ordereddict module for Python 2.6 2017-05-26 12:34:05 -04:00
Murtuza Zabuawala 2c9af4784e Allow creation of ENUM types with no members. Fixes #2426 2017-05-26 12:21:23 -04:00
Murtuza Zabuawala dba64e77f1 Order columns in multi-column pkeys correctly. Fixes #2417 2017-05-26 11:04:32 -04:00
Murtuza Zabuawala 45d423c0ce Ensure the last placeholder is included when generating UPDATE scripts for tables. Fixes #2436 2017-05-26 10:59:09 -04:00
Murtuza Zabuawala a45bb905f5 Pass the database ID to the query tool when using the Script options. Fixes #2435 2017-05-26 10:57:31 -04:00
Khushboo Vashi 3216eca4a8 Add feature tests to ensure that data types are properly rendered in the query tool. 2017-05-26 10:46:58 -04:00
Dave Page 2f097cd016 Fix typo in freshly added check. 2017-05-25 17:10:41 -04:00
Murtuza Zabuawala e9da157cc7 Add numerous missing checks to ensure objects really exist when we think they do. Fixes #2427 2017-05-25 16:28:04 -04:00
Dave Page 04ce72a6ae Fix RE-SQL for rules which got the table name wrong in the header and DROP statement. Fixes #2422 2017-05-19 12:21:29 +01:00
Murtuza Zabuawala eb18320950 Improve error handling in cases where the user tries to rename or create a server group that would duplicate an existing group. Fixes #2414 2017-05-17 15:57:38 +01:00
Dave Page 17de7db70b Fix server stats display for EPAS 9.2, where inet needs casting to text for concatenation. Fixes #1831 2017-05-17 15:53:13 +01:00
Murtuza Zabuawala a3226b1eb5 Reverse engineer SQL for table-returning functions correctly. Fixes #1851 2017-05-17 15:49:56 +01:00
Murtuza Zabuawala 655d5888a6 Various FTS dictionary cleanups. Fixes #1126 2017-05-17 14:13:05 +01:00
Surinder Kumar 1db81da020 Fix JS error when selecting a single grid cell. 2017-05-16 08:44:29 +01:00
Dave Page 4817b37742 Include backports.csv as a python dependency in the wheel. 2017-05-15 16:42:40 +01:00
Dave Page be42b67f79 Ensure all required directories are created before we start logging. 2017-05-15 15:59:47 +01:00
Surinder Kumar d7d4bf475b Various improvements to the NULL/DEFAULT handling in the data editor. Fixes #2399 2017-05-15 15:04:16 +01:00
Dave Page aa554eb767 Ensure that there's an __init__.py file present in the backports module directory on Windows 2017-05-15 15:03:15 +01:00
Dave Page 001e0ce1cf Mac build fixes:
- Rebuild Python packages from scratch so we know what libraries they use
- Ensure the backports Python module has an __init__.py file.
2017-05-15 14:38:52 +01:00
Murtuza Zabuawala 1cb2a62fa8 Ensure object names are properly escaped for external process management. Fixes #2405 2017-05-15 13:01:12 +01:00
Dave Page f0e78309cb Bump version in preparation for release. 2017-05-15 12:25:28 +01:00
Neel Patel 07b06348ab While building runtime with QtWebEngine, we found 2 compilation errors which were introduced in a previous commit in runtime:
We set "setNetworkAccessManager" in WebEnginePage which was only required for Webkit so removed that statement.
"triggerAction" on WebPage is only required for Qt > 5 with WebKit only. Not required for WebEngine so added that condition.
2017-05-15 11:29:14 +01:00
Murtuza Zabuawala 2ad14b379e Validate table presence in SQL and Properties route handles. Fixes #2395 2017-05-15 10:15:09 +01:00
Joao Pedro De Almeida Pereira 3bf17d9df4 1) Splits the SQL query used to retrieve the Dependents, Dependencies, and Roles SQL file into multiple versioned files.
2) Add Unit Tests for each file.
3) Add ORDER BY into Copy Selection Feature test to ensure the results are retrieved always in the same order
4) Renamed the Scenario of the xss_checks_pgadmin_debugger_test and skip it for versions less than 9.1
5) Deleted unused __init__.py files.
2017-05-15 10:40:46 +05:30
Surinder Kumar 0e7efc0cf8 Track disabled rows properly in the edit grid. 2017-05-12 16:42:06 +01:00
Murtuza Zabuawala aea0d93390 Hide menu options for creating objects, if the object type is set to hidden. Includes Jasmine tests. Fixes #2225 2017-05-12 12:10:46 +01:00
Dave Page dd318e679d Minor colour tweaks for highlighted rows in the data editor. These are likely to be changed again when we overhaul and standardise the colouring, but at least now they're using colours from the style guide. 2017-05-12 11:29:46 +01:00
Akshay Joshi 1f903ba231 Updated psycopg2 version for PostgreSQL 10 compatibility. Fixes #2377 2017-05-12 15:43:03 +05:30
Surinder Kumar 4f9628ed43 Improve handling of nulls and default values in the data editor. Fixes #2257 2017-05-12 10:53:57 +01:00
Murtuza Zabuawala 05787fdba9 Properly handle non-ASCII column names in CSV. Fixes #2314 2017-05-12 10:38:23 +01:00
Murtuza Zabuawala 94cbd70370 Don't change the trigger icon back to "enabled" when the trigger is updated when it's disabled. Fixes #2271 2017-05-10 09:48:21 +01:00
Murtuza Zabuawala 9452e0699e Allow creation of tables with pure numeric names. Fixes #2284 2017-05-10 09:40:32 +01:00
Neel Patel 3ed00d3be7 1) Fixed compilation issue with QT4.
2) Make trigger action 'RequestClose' backword compatible with annulen webkit.
2017-05-10 13:34:39 +05:30
Andrei Antonov cbf2de6c27 HTML escape the label, when setting the collection node count along
with the label of the tree-nodes.
2017-05-10 13:26:18 +05:30
Magnus Hagander 29217946c3 Relax version dependency on psycopg2
Right now psycopg2 is required to be exactly version 2.6.2, which makes it mostly impossible to install pgadmin4 without having the postgresql C development packages installed (since you need to rebuild psycopg2 from source to make that work, given that few platforms ship *exactly* that version).
2017-05-09 12:32:20 +01:00
Murtuza Zabuawala 13f4432bbd Support loading files with Unicode BOMs. Fixes #2369 2017-05-09 12:06:49 +01:00
Neel Patel d0e9c82fea Fixes #2328
1) Fixed issue of opening Query Tool and Debugger in new Tab with QT 5.8 and annulen webkit
 2) Moved unload event of window from javascript files to html.
 3) Change alertify messages for debugger.
 4) Closed all connections created by debugger. Previously only one connection has been closed.
2017-05-09 13:03:44 +05:30
Murtuza Zabuawala 63d42745ef Fix various issues in CSV file download feature:
1) To handle non-ascii filenames which we set from table name. Fixes #2314

2) To handle non-ascii query data. Fixes #2253

3) To dump JSON type columns properly in csv. Fixes #2360
2017-05-08 13:36:11 +01:00
Harshal Dhumal a80f760933 Only reconnect to databases that were previously connected. Fixes #2292 2017-05-08 12:36:51 +01:00
Khushboo Vashi 94b7fc483a Fix sorting of sizes on the statistics views by sorting raw values and prettifying on the client side. Includes Jasmine tests for the prettyfying function. Fixes #2315 2017-05-08 11:29:13 +01:00
Navnath Gadakh c32bf7780e Windows compatibility fixes for the test suite. 2017-05-08 09:25:05 +01:00
Murtuza Zabuawala 155348d712 Fix the Backup module where it was not working if user changes its preference language other than english. Fixes #2354 2017-05-04 16:06:10 +01:00
Murtuza Zabuawala 95f763463f Fix an issue in NodeAjaxControl caching with cache-node field and add cache-node field in Trigger & Event trigger node so that whenever the user creates new Trigger Function we get new data from server in NodeAjaxControl. . Fixes #2242 2017-05-04 16:02:28 +01:00
Surinder Kumar 93df5e3e54 Ensure errors thrown when deleting rows in the query tool in edit mode are shown properly. Fixes #2356 2017-05-02 12:20:30 +01:00
Sarah McAlear 4acecfa59a Use a different server name for unit vs. feature tests to avoid some observed conflicts. 2017-05-02 12:00:30 +01:00
Murtuza Zabuawala 6790bfd0c0 Fixed handling of default parameters ordering in functions. Fixes #2350 2017-04-25 18:40:44 +05:30
Murtuza Zabuawala 1ce1f216ca Fixed handling of nested privileges. Fixes #2335 2017-04-25 12:39:46 +05:30
Murtuza Zabuawala 38c8a4fb60 Fix handling of bigint[] type. Fixes #2272 2017-04-25 12:24:02 +05:30
Murtuza Zabuawala 928c0d3de8 startsWith() function of java script is not supported in IE, instead use startsWith() function of underscore string. Fixes #2347 2017-04-25 12:00:15 +05:30
Joao Pedro De Almeida Pereira f718e1f49c Only display the header row in SlickGrid where columns actually exist. 2017-04-24 20:26:59 +01:00
Akshay Joshi a449be784e Initial support for PG 10.0, per #2214 (missed some files) 2017-04-24 13:56:01 +01:00
Akshay Joshi 59834fba31 Initial support for PG 10.0, per #2214 2017-04-24 13:55:29 +01:00
Joao Pedro De Almeida Pereira 3eb92f7ea3 Update test requirements for the latest rev of Chrome. 2017-04-24 13:07:04 +01:00
Ashesh Vashi 139a10e8f9 Added dependency on Flask-Migrate added by previous commit:
6283ef7f5e
2017-04-24 16:26:50 +05:30
Sarah McAlear 6283ef7f5e [Configuration][Migration] Use 'alembic' for migration of the SQLite
based configuration file from one version to another, and also allows us
to have a single path of creating the table instead of creating tables
using SQLAlchemy or hand rolled SQL

This allows us to run the migrations directly in the code, and it will
avoid the error prone version numbering.

Patched by: Sarah McAlear
Revisions: Joao Pedro De Almeida Pereira, George Gelashvili.
Reviewed by: Ashesh Vashi, Murtuza Zabuawala
2017-04-24 08:37:27 +05:30
Dave Page 04ccc84bf6 Revert "Update Chromedriver version for Chrome 58."
This reverts commit 70832286bc.

The Jenkins CI doesn't like this at all.
2017-04-21 10:15:17 +01:00
Dave Page f6ffaaff98 Revert "Ensure PIP is the latest version when running the CI tests."
This reverts commit bf1f4aefa6.
2017-04-21 10:15:05 +01:00
Dave Page bf1f4aefa6 Ensure PIP is the latest version when running the CI tests. 2017-04-21 10:04:47 +01:00
Khushboo Vashi 618d9bc7a9 Enable horizontal scrolling in the treeview. Fixes #2339 2017-04-21 10:00:22 +01:00
Joao Pedro De Almeida Pereira 70832286bc Update Chromedriver version for Chrome 58.
Note:
If you had previously installed the old driver you need to uninstall and install again it.

$ pip uninstall chromedriver_installer
$ pip install -r regression/requirements.txt
2017-04-21 09:54:18 +01:00
Jonas Thelemann 929a43c9fa Prevent the top-left logo from changing colour when clicked. 2017-04-18 15:09:09 +01:00
Jonas Thelemann 649b064cf3 Re-order Makefile targets for readability. 2017-04-18 15:05:32 +01:00
Jonas Thelemann 8e127cf4fa German translation update. 2017-04-18 15:03:36 +01:00
Jonas Thelemann 7deb570b61 Translation doc update:
- ...anonymized the language codes (ISO 639-1, $LANG)
 - ...clarified the "Updating and Merging" description and removed the examples as they were pretty useless in my eyes. Correct me if they had a meaning.
 - ...anonymized the bash user
 - ...updated the "New Language" section
2017-04-18 15:02:35 +01:00
Dave Page 9f6041b2a7 Revert "Ensure the treeview can be scrolled horizontally. Fixes #2339"
This reverts commit 78c25cef21 which apparently prevents tree nodes being collapsed.
2017-04-18 14:51:26 +01:00
Khushboo Vashi 8d6add13c0 Order foreign table columns correctly. Fixes #2318 2017-04-18 14:37:30 +01:00
Khushboo Vashi 78c25cef21 Ensure the treeview can be scrolled horizontally. Fixes #2339 2017-04-18 14:01:13 +01:00
Khushboo Vashi a3007b7335 Ensure database driver names and description strings can be translated. Fixes #2190 2017-04-18 13:33:27 +01:00
Matthew Kleiman d663d553c5 Allow column or row selection in the query tool. Fixes #2216 2017-04-18 13:28:45 +01:00
Murtuza Zabuawala c35dbc7211 Proper alignment of dropdown menu labels 2017-04-14 15:53:25 +05:30
Akshay Joshi 0d566a6f3a Changed switch label from True/False to Show/Hide for 'Package Functions' and 'Package Procedures' node in Preferences dialog. 2017-04-14 14:57:38 +05:30
Surinder Kumar 9bbc05051c Remove some unused events. 2017-04-12 15:46:31 +01:00
Murtuza Zabuawala 019c1302cb Update inode info when refreshing treeview nodes. Fixes #2336 2017-04-12 13:29:56 +01:00
Akshay Joshi cbee76eac8 Align labels with switches properly. 2017-04-12 13:28:07 +01:00
Navnath Gadakh 62716c4193 Include passed test results in the JSON output from the regression tests. 2017-04-12 13:11:53 +01:00
Murtuza Zabuawala 7dd9efd811 Fix binary search algorithm so new treeview nodes are added in the correct position. Fixes #2331 2017-04-12 13:01:24 +01:00
Dave Page 0c435154ac Adjust windows resources so they work consistently. 2017-04-10 15:15:15 +01:00
Dave Page 665ec46052 Fix application icon in mingw builds. 2017-04-10 14:29:53 +01:00
Dave Page fdf292964b Bump version numbers for release. 2017-04-10 14:24:46 +01:00
Murtuza Zabuawala a2a2b8b888 Ensure the query tool displays but does not render HTML returned by the server in the results grid. Fixes #2330. 2017-04-10 14:07:48 +01:00
Paresh More b86fa15dbc Ensure the web/ directory is cleared before upgrading Windows installations. Fixes #2187 2017-04-10 12:05:09 +01:00
Navnath Gadakh 79e81478e3 Fix a regression framework issue with Python 2.6. 2017-04-10 11:28:10 +01:00
RAJASEKAR G 024b97479d Recover properly if a database is renamed externally. Fixes #2077 2017-04-10 11:09:01 +01:00
RAJASEKAR G 14f3a57d82 Ensure menus are updated after disconnecting a server. Fixes #2281 2017-04-10 09:35:21 +01:00
Dave Page a2c4cb1606 Adding a delay clearly didn't fix the feature tests :-( 2017-04-07 15:33:41 +01:00
Dave Page a431937b50 Attempt to better catch errors in the CI tests. 2017-04-07 15:14:56 +01:00
Dave Page 8a01cdfaf9 Add a 0.5 second delay to treeview node expansion in the feature tests, to try to (temporarily) allow for script loading time. Tentatively enable the feature tests in CI to see if it works. 2017-04-07 12:41:54 +01:00
Dave Page de80545400 Include an example of running just the feature tests. 2017-04-07 12:37:00 +01:00
Murtuza Zabuawala 3dba7d8303 Fixes #2321 - [Browser Tree] Shows only the newly created node (not, all
other child node) of a parent node, when it has not been already loaded.

In order to resolve the issue - we will open the parent, and select the
created node, instead of adding it to parent node.
2017-04-07 08:58:43 +05:30
Dave Page d55b8394cf Oops, syntax error. 2017-04-06 16:13:42 +01:00
Dave Page fcc122f290 Swap entries in karma.conf so test-main.js is matched first, per suggestion from Atira to fix the failing Jasmine tests. 2017-04-06 15:34:05 +01:00
RAJASEKAR G 3880bc7eb8 Fix validation on the table dialogue so the Save button isn't enabled if the name is removed and autovac custom settings are enabled. Fixes #2105 2017-04-06 09:56:52 +01:00
RAJASEKAR G c758920890 Properly handle EXPLAIN queries entered directly by the user in the query tool. Fixes #2287 2017-04-06 09:46:42 +01:00
Begina Felicysym 9ac5bf4f12 Update the Polish translation 2017-04-06 09:36:10 +01:00
Dave Page a412e3226f Use a more appropriate output file name. 2017-04-06 09:34:19 +01:00
Navnath Gadakh dd23f71478 Write a JSON file when regression tests run, listing results. 2017-04-06 09:33:29 +01:00
Jonas Thelemann b8566a0127 Un-split some strings for translateability. And so begins the battle between gettext and pep8... 2017-04-05 15:05:11 +01:00
Dave Page 6d9cfa6679 Update translations 2017-04-05 14:03:17 +01:00
Jonas Thelemann e66616b1d8 Add German translation Fixes #2323 2017-04-05 14:02:46 +01:00
Jonas Thelemann ea2b3f43bd Remove unnecessary quotes. 2017-04-05 13:58:47 +01:00
Jonas Thelemann ddfa934357 Unified usage of "definition incomplete". 2017-04-05 13:55:00 +01:00
Jonas Thelemann 37120bf199 (De)Capitalized strings to fit the common/usual format, corrected spelling, removed unnecessary characters. 2017-04-05 13:50:49 +01:00
Jonas Thelemann 65f21a8cd7 Replace all occurrences of "can not" with "cannot". 2017-04-05 13:38:14 +01:00
Maxim Zakharov 85db82c7f4 Avoid an unauthorised error if clicking on the logo in desktop mode. 2017-04-05 13:33:12 +01:00
Dave Page a7cdd78ad7 Add targets to extract/merge and compile messages. 2017-04-05 13:27:32 +01:00
Dave Page 53c4e2df3b Add an appbundle-webkit build target to build an appbundle, but force the use of QtWebKit. 2017-04-05 12:35:07 +01:00
Dave Page ee17c77093 Ignore some MinGW related build files. 2017-04-03 20:59:42 +01:00
Dave Page e78865b2d4 Add a script for creating a Windows build using Qt with MinGW & QtWebKit Reloaded. 2017-04-03 20:58:47 +01:00
Ashesh Vashi 4d55e8abe8 Resolved a typo in the previous commit. 2017-04-03 19:00:06 +05:30
Ashesh Vashi 02a3919b06 As per Murtuza, we will have the '__module__', when running as a WSGI
application, but - it will not have the '__file__' attribute.
2017-04-03 18:55:24 +05:30
Ashesh Vashi b756407c3c When running pgAdmin as a WSGI application, we will not be able to find
the '__main__' module under 'sys.modules'.
2017-04-03 18:44:53 +05:30
Murtuza Zabuawala 74655e60a0 Replace the '$DIR' only when found in the binary directory string. 2017-04-03 18:32:50 +05:30
Dave Page e7cee870a7 Mingw32 compatibility fixes 2017-04-03 12:58:08 +01:00
Aravindraja Thinakaran bb0bd8acc5 Properly handle truncated table names (> NAMEDATALEN). Fixes #2277 2017-04-01 02:57:48 -04:00
Harshal Dhumal 9acf340400 Generic function qtLiteral was not adapting values properly when they contain non ascii characters. Fixes #2305 2017-03-31 21:11:25 -04:00
Dave Page 4ba9269a88 Remove debug code. 2017-03-31 20:27:41 -04:00
Akshay Joshi 6a861f7a91 Add the config option ALLOW_SAVE_PASSWORD to allow admins to disable saving of passwords. Fixes #2232 2017-03-31 20:14:37 -04:00
Khushboo Vashi efb077b7f7 Fix error highlighting in the query tool. Fixes #2291 2017-03-31 20:06:55 -04:00
Dave Page a4fd313371 Add missing semi-colon. 2017-03-31 17:05:29 -04:00
Dave Page c7fc21e3bb Update Babel version. 2017-03-31 17:03:36 -04:00
Dave Page f3e6fe5b64 Add missing bracket 2017-03-31 12:48:18 -04:00
Dave Page 4e50c186df Update CI script output for parsing with the Log Parser plugin in Jenkins 2017-03-31 12:45:56 -04:00
Dave Page 7a1bb8863a Include translation message catalogs in CI build/test runs. 2017-03-31 12:26:57 -04:00
Dave Page ac1637f281 Make sure each build/test starts in the correct directory. 2017-03-31 12:17:34 -04:00
Dave Page b6fa5f5b33 Add message catalog builds to CI, and run all tests from a runner script to enable test/build addition purely from the source tree. 2017-03-31 12:13:58 -04:00
Murtuza Zabuawala 08ff9d7422 Dialog Help was broken in case where query tool/Debugger opens in new browser tab. Fixes #2310 2017-03-31 16:08:05 +05:30
Maxim Zakharov 8005b05292 Fixes #2304, #2145 - Resolve the issue for restoring the table from the backup.
Earlier - implementation was generating the backup code like as below:
XXX/pg_restore.exe --host "x.x.x.x" --port "xxxx" --username "osboxes" --no-password --dbname "test" --data-only --verbose --table "tt.test2" "XXX-FILE.bak"

It should have been:
XXX/pg_restore.exe --host "x.x.x.x" --port "xxxx" --username "osboxes" --no-password --dbname "test" --data-only --verbose --schema "tt" --table "test2" "XXX-FILE.bak"
2017-03-31 13:16:17 +05:30
Dave Page 696343196a Fix Python 3 compatibility bug 2017-03-30 23:16:43 -04:00
Joao Pedro De Almeida Pereira eb89998dc0 From a visual standpoint, grey highlight makes selection look deselected rather than selected. A brighter color would quickly provide visual feedback on an action.
With this patch the color of selected rows look more highlighted.
2017-03-30 22:56:13 -04:00
Susan Douglas e58dce9425 Correct claims made in the management_basics.rst file 2017-03-30 22:52:17 -04:00
Dave Page 5ce6cd8ca0 Fix a thinko. Had to be one following those typos... 2017-03-30 22:47:05 -04:00
Dave Page 4e96692060 Fix a typo 2017-03-30 17:25:41 -04:00
Dave Page 256f42c64b Fix a typo 2017-03-30 17:19:22 -04:00
Dave Page 4b1781124a Use the correct Python binary. 2017-03-30 17:13:06 -04:00
Dave Page 8941756a9d Select the correct Sphinx version 2017-03-30 17:11:08 -04:00
Dave Page 0a381c4a53 Add scripts for building the PIP wheel and tarballs 2017-03-30 17:05:49 -04:00
Dave Page b826e0863c Clean the build from the correct directory. 2017-03-30 16:49:11 -04:00
Dave Page cdc1b70aea Ensure CI scripts are executable 2017-03-30 16:37:44 -04:00
Dave Page b65896b85b Add basic CI runner scripts for Jenkins 2017-03-30 16:34:24 -04:00
Maxim Zakharov 4e16345257 Add support for proxies in the runtime. Fixes #2301 2017-03-29 12:17:16 -04:00
Dave Page 87bbb5ef2c Revert to the old, arguably broken code for QT4 port selection, as QT4 doesn't support TCP socket binding as QT5 does. 2017-03-29 11:33:55 -04:00
Sarah McAlear 1d27341e21 Fix translation extraction for new client side translations, and update catalogs. 2017-03-28 15:21:49 -04:00
Khushboo Vashi 8745417926 Fix ascending/descending sort order in backgrid while clicking on the headers. Fixes #2303 2017-03-28 09:19:24 -04:00
Dave Page 44ce8985e0 Fix typo in variable name. 2017-03-28 08:55:38 -04:00
Dave Page 688c810300 Add header that seems to be needed with Python 3. 2017-03-28 08:41:38 -04:00
Maxim Zakharov 72548a99e1 Fix usage of QString::toUtf8(). Fixes #2299
Desktop runtime has a couple bugs using already freed memory supplied to embedded python leading to occasional crashes and failures to start maintenance processes (VACUUM, ANALYZE, REINDEX, CLUSTER).

This is caused by incorrect usage of QString::toUtf8() which returns newly created QByteArray which is automatically destroyed once closing context; e.g.
Py_SetPythonHome(pythonHome.toUtf8().data());
2017-03-28 08:26:16 -04:00
Dave Page f19fc307b1 Treat doc build warnings as errors for CI purposes and correctness. 2017-03-27 22:10:39 -04:00
Dave Page 7450c2df0d Revert code cleanup that wasn't 2.6 compatible. 2017-03-27 21:27:17 -04:00
Dave Page 95f43d59b8 Revert "Ensure client-side translations are correctly extracted into the message templates."
This reverts commit 82bd97aed0.

There are still issues extracting with these changes.
2017-03-27 13:53:40 -04:00
Sarah McAlear 82bd97aed0 Ensure client-side translations are correctly extracted into the message templates. 2017-03-27 13:24:47 -04:00
Khushboo Vashi 633d2ad28c Fix the bin path preferences. 2017-03-27 12:25:59 -04:00
Akshay Joshi 757500c478 Ensure preferences are properly saved the first time they're set. 2017-03-27 12:19:28 -04:00
Dave Page b2ab35e990 Don't require an auth key for the static help files. It doesn't play nicely with webkit. 2017-03-26 21:52:31 -04:00
Dave Page ea6d97c49d Add a couple of headers that Qt 5.8 seems to be more picky about, and fix the free port check to use TCP not UDP 2017-03-26 21:02:15 -04:00
Jonas Thelemann c391696054 Remove some unnecessary line breaks causing problems with translations. 2017-03-26 20:26:58 -04:00
Sarah McAlear 66815643a9 Fix a cleanup SQL query to enable running feature tests on CI against Greenplum. 2017-03-25 22:09:00 -04:00
Dave Page 6152d73f13 Fix some code inspection complaints 2017-03-25 22:04:52 -04:00
Dave Page a6fa35789c Fix broken markup 2017-03-25 22:04:52 -04:00
Dave Page 8bd648c5b6 Don't include the tools directory in the Mac & Windows packages 2017-03-25 22:04:52 -04:00
Dave Page 4f27afc99b Ensure the spinner doesn't obscure the version 2017-03-25 22:04:52 -04:00
Dave Page 232ebae3aa Make target for the minimise tool 2017-03-25 22:04:52 -04:00
Dave Page e0f7a1cde6 Add a simple tool to minimise CSS and JS files (for future use) 2017-03-25 22:04:52 -04:00
Akshay Joshi 569ceb3906 Modify the web code to allow the Query Tool and Debugger to be opened in new tabs, per settings in Preferences. Fixes #1344
Note that this does *not* enable the runtime to use multiple windows at this stage. It's really only useful in Server mode.
2017-03-24 14:43:56 +00:00
Khushboo Vashi 0eda6033df Allow users to select UI language at login or from Preferences rather than unpredictable behaviour from browsers. Fixes #2190 2017-03-24 14:20:10 +00:00
Dave Page 6cb9ece6fd Decode error messages before trying to use them. 2017-03-24 14:11:31 +00:00
Wayne Winch Jr 5f2a15dd6d Fix deletion of rows where the primary key isn't at ordinal zero. Fixes #2274 2017-03-24 13:32:56 +00:00
Dave Page ee73b5ba26 Fix path 2017-03-24 11:41:14 +00:00
Atira Odhner 73193a0d6d Update translation docs for client side JS translation support. 2017-03-24 11:40:51 +00:00
Murtuza Zabuawala d4e88217eb Added timeout in _wait_timeout function in our psycopg2 module.
Fixes debugger module, Added common function to covert 2d array data to dict for BackGrid.
2017-03-24 14:01:59 +05:30
Dave Page d205550b53 Fix Python 3 compatibility. 2017-03-23 13:43:24 +00:00
Dave Page 8748ee20cb Client side translation. 2017-03-23 12:35:28 +00:00
Dave Page 59a6a08e8a Add file missed from the previous commit. 2017-03-23 12:06:13 +00:00
Atira Odhner 10920404e1 Re-organised the regression directory now we have multiple test suites: move test_utils.py into python_test_utils/ 2017-03-23 11:59:31 +00:00
Atira Odhner fe9bc379c7 Replace the template selection feature test with one that tests table DDL generation (which also covers template selection). 2017-03-23 11:47:21 +00:00
Atira Odhner 77007996ed Support generation of DDL for tables in Greenplum DB. Fixes #2261 2017-03-23 11:40:06 +00:00
Atira Odhner 0ba0b25290 Move foreign key templates into a default directory. 2017-03-23 11:13:06 +00:00
Harshal Dhumal 720aefbe6f Select2Cell: Check if cell is in multiselect mode before setting default selection of multiple values. Fixes #2283 2017-03-23 10:45:42 +00:00
Dave Page 5b12fd6d5f Client-side translation for the About and Dashboard modules. 2017-03-22 12:57:59 +00:00
Ashesh Vashi 90a369b7de [Extendible][Dashboard] Allow to create a server clicking the
'Add New Server' button on the dashboard, even when the first node is
of not type of 'server-group' in the browser tree.
2017-03-21 22:58:07 +05:30
Harshal Dhumal 2142824448 PRevent an error being displayed if the user views data on a table with no columns. Fixes #2244 2017-03-21 16:40:21 +00:00
Surinder Kumar aee1492d0d Correct some EDB Postgres Advanced Server branding. 2017-03-21 10:12:26 +00:00
Dave Page 564ecc37db Ignore the Yarn lock file. 2017-03-21 10:11:19 +00:00
Ashesh Vashi 4eafdbeff6 Resolved a typo - show a '?' after the 'Show timing' preference. 2017-03-21 11:17:35 +05:30
Dave Page 4ff082ee74 Use correct file header for a JS file. 2017-03-20 19:32:52 +00:00
Ashesh Vashi 72128df75c [Extendible][Dashboard] Allow to show the dashboard of their choice for
the selected node in the browser tree.
2017-03-20 19:17:47 +05:30
Sarah McAlear c9e04fec8d Show tooltips for disabled buttons to help user learning. Fixes #2226 2017-03-20 10:33:35 +00:00
Murtuza Zabuawala 145983d544 Add miissing braces to reverse engineered SQL header block for Functions. Fixes #2246 2017-03-17 12:48:58 +00:00
Murtuza Zabuawala 461086c17d Fix View Data filter options. Fixes #2265 2017-03-17 12:45:59 +00:00
Murtuza Zabuawala e9702752d9 Fix hadling of DATERANGE[] type. Fixes #2258 2017-03-17 12:40:08 +00:00
Dave Page 6abb906b20 Remove test related files from the mac appbundle. 2017-03-17 12:21:15 +00:00
Harshal Dhumal e4134695e5 Fix dropping of databases with Unicode names. Fixes #2243
1. Pickup correct encoding in qtLiteral to decode.
2. While releasing database connection only decode database name if it's not unicode.
2017-03-17 10:33:03 +00:00
Dave Page 648c332488 Import from flask_babel instead of the deprecated flask.ext.babel. Fixes #2264 2017-03-17 10:22:41 +00:00
Atira Odhner 4464be6f43 Fix a typo and remove an unnecessary copy of the column properties template. 2017-03-17 10:02:52 +00:00
Dave Page b2a74ad26d Fix a bunch of file headers. 2017-03-16 14:27:55 +00:00
Joao Pedro De Almeida Pereira 6ad6bf5aab Update test requirements to include a version of Selenium that supports Chrome 57, and the chromedriver installer. 2017-03-16 09:53:26 +00:00
Atira Odhner 2abd3724c2 Ensure the screenshots directory exists before trying to save regression test screenshots 2017-03-15 22:06:04 +00:00
Dave Page cc4686f1bb README improvements. 2017-03-15 17:16:02 +00:00
Atira Odhner dbddad50bf Move the package.json file to the web/ directory 2017-03-15 17:15:16 +00:00
Atira Odhner c8fa0c4e28 Don't ship the node_modules directory with packages as it's only used for local testing. 2017-03-15 17:14:37 +00:00
Atira Odhner 5593faf2a4 Move the karma config and node_modules into the web directory. 2017-03-15 17:13:55 +00:00
Atira Odhner ae0d8e89eb Fix the path to JS 2017-03-15 17:12:58 +00:00
Atira Odhner 889050b71d Fix quotes to ensure we have valid JS. 2017-03-15 17:11:53 +00:00
Atira Odhner 172b41cba8 Refactor clipboard copying into a separate file for use outside the SQL Editor. 2017-03-15 17:11:11 +00:00
Atira Odhner 4445f9dd63 Add a mechanism for centralising JS translations, to avoid having to render many JS files with Jinja. 2017-03-15 17:10:22 +00:00
Atira Odhner 2f84156dc6 Add Jasmine test framework for JS testing. 2017-03-15 17:09:22 +00:00
Murtuza Zabuawala ff9d6cd3d5 Fix previous partial commit 2017-03-14 09:34:12 +00:00
Murtuza Zabuawala cc4c557122 Move Bootstrap files into the distribution format. 2017-03-14 09:23:30 +00:00
Dave Page 1c6f30a0ed Remove \n in translation that was causing a syntax error. 2017-03-13 10:39:36 +00:00
Ashesh Vashi 7767c085c3 Resolved an issue finding the python interpreter on *nix systems, and
Windows 2008 R2 (32 bit), while running the pgAdmin 4 as runtime for
the PostgreSQL one click installers.

- Found a typo in runtime code, we were appending the path using ';' on
  *nix systems too. We should have used ':', and that did not allow the
  os.environ['PATH'] to identify the correct path of the python
  interpreter under the 'venv' directory.

- On Windows 2008, it was not honouring the environment variables, set
  under the Qt application (e.g. pgAdmin4.exe runtime), in the python
  application. (e.g. pgAdmin4.py). We will need to assume that - the
  python interpreter resides under the 'venv' directory outside the
  'bin' directory.

- Also, on windows 2008, it was setting PYTHONHOME environment variable
  to the full path of the pgAdmin4.exe, we need to reset it to 'venv'
  directory, if we find the python interpreter under it.

Thanks Murtuza Zabuawala for tips, and help.
2017-03-10 21:19:06 +05:30
Atira Odhner 28deb34283 Remove some dead code. 2017-03-10 10:27:17 +00:00
Begina Felicysym 5e6c29d5db Update Polish translation 2017-03-10 09:03:18 +00:00
Joao Pedro De Almeida Pereira d756f2f6c6 Create screenshots when feature tests fail. 2017-03-09 15:34:51 +00:00
Harshal Dhumal 502c827697 Fix numeric control validation in nested schemas. Fixes #2241 2017-03-09 15:23:18 +00:00
Dave Page 670c8a2cc1 Disable HTMLMIN with Python 2.6 as it doesn't work on that older version. 2017-03-09 15:21:52 +00:00
Murtuza Zabuawala bc63652811 Fix the issue where Import/Export was failing in linux runtime. Fixes #2166
Issue:
Changes done by Ashesh in pgAdmin4.py file for setting up PYTHONHOME variable to sys.prefix was applicable only for windows only.

Additionally I have also added exception handling for file provided by user for Backup/Restore/Import/Export.
2017-03-09 09:54:55 +00:00
Murtuza Zabuawala 533833cb02 Cleanup some ugly code formatting. 2017-03-09 09:27:41 +00:00
Dave Page 18d465e7bc Fix some messages and update the Polish translation from Begina Felicysym 2017-03-09 09:23:19 +00:00
Begina Felicysym b6fefd89b6 Add a Polish translation 2017-03-08 10:14:18 +00:00
Dave Page fb44ffffa0 Fix a couple of translation issues, and remove the test French translation files. 2017-03-08 10:13:15 +00:00
Dave Page 981ebfbcf7 Ensure feature tests are compatible with Python 3.5.
This is required even if they aren't run, as RPM builds will try to byte compile all files in the distro.
2017-03-08 09:49:48 +00:00
Ashesh Vashi da9aa3ccbd Don't try to start chromedriver and friends if the feature tests are excluded. 2017-03-08 09:21:28 +00:00
Dave Page 3658ca6c55 Avoid leaving chromedriver processes cluttering the landscape after running the feature tests.
Per https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/3378, we were doing it wrong :-(
2017-03-07 13:49:52 +00:00
Ashesh Vashi 41e0a73ea6 Adding the directory containing 'config.py' in to the sys.path variable,
so that - when config.py refered from outside the pgAdmin itself (i.e.
during building the pip).
2017-03-07 17:10:34 +05:30
Dave Page 1f9fd507b0 Translation updates. 2017-03-07 11:20:20 +00:00
Ashesh Vashi 6cc1fbe739 Import config only when needed, it was causing cyclic dependency when
running the regression suite.
2017-03-07 16:07:10 +05:30
Jonas Thelemann 8435257e00 Fix some typos in comments. 2017-03-07 10:35:24 +00:00
Jonas Thelemann e3e951e86d Prevent the Slonik logo obscuring the login dialogue on small displays in server mode. Fixes #2230 2017-03-07 10:33:38 +00:00
Jonas Thelemann c34f5fd2d4 Use "could not" consistently, instead of "couldn't" which was used in some places. 2017-03-07 10:29:54 +00:00
Ashesh Vashi f2fc1ceba8 Resolved quite a few file-system encoding/decoding related cases.
In order to resolve the non-ascii characters in path (in user directory,
storage path, etc) on windows, we have converted the path into the
short-path, so that - we don't need to deal with the encoding issues
(specially with Python 2).

We've resolved majority of the issues with this patch.
We still need couple issues to resolve after this in the same area.

TODO
* Add better support for non-ascii characters in the database name on
  windows with Python 3
* Improve the messages created after the background processes by
  different modules (such as Backup, Restore, Import/Export, etc.),
  which does not show short-paths, and xml representable characters for
  non-ascii characters, when found in the database objects, and the file
  PATH.

Fixes #2174, #1797, #2166, #1940

Initial patch by: Surinder Kumar
Reviewed by: Murtuza Zabuawala
2017-03-07 15:31:03 +05:30
Dave Page 063177155e Bump version prior to release. 2017-03-06 15:35:08 +00:00
Dave Page 3317a02120 Fix regression tests with runtime auth. Fixes #2228 2017-03-06 15:24:52 +00:00
Dave Page 6696b3c316 Authenticate the runtime to the server. Fixes #2228 2017-03-06 14:53:49 +00:00
Murtuza Zabuawala 6d6a3753ee Fix the path to the busy indicator for the treeview which changed when the aciTree module was moved. 2017-03-06 10:36:07 +00:00
Murtuza Zabuawala da186ea77b Ensure servers are deleted when their parent group is deleted. Fixes #2212 2017-03-06 10:35:27 +00:00
Murtuza Zabuawala af499c0c9a Show the correct indeterminate state when editing new boolean values. Fixes #2218 2017-03-06 10:30:58 +00:00
Neel Patel 278c64c361 Add missing "Run Now" option for pgAdmin jobs. Fixes #1796 2017-03-06 10:24:43 +00:00
Dave Page 523cd6f34a Exclude a bunch of unnecessary files from the Windows package. 2017-03-02 12:08:56 +00:00
Dave Page d1b95aeb33 Revert "Rename the top level feature tests directory for consistency with other test directories"
The exclude command line option relies on the directory name. This needs fixing...

This reverts commit 9288d69b62.
2017-03-02 11:23:05 +00:00
Dave Page 9288d69b62 Rename the top level feature tests directory for consistency with other test directories 2017-03-02 11:09:08 +00:00
Harshal Dhumal ffa8d94e76 Better handling the non-ascii characters for different database objects.
Using 'psycopg2.extensions.UNICODE' (for Python < 3) in the psycopg2
driver for proper conversation of unicode characters. Also - adjusted
the string typecaster to take care of different character types (char,
character, text, name, character varying, and their array types).

Reviewed by: Dave Page, Murtuza Zabuawala & Akshay Joshi
2017-03-02 15:09:28 +05:30
Dave Page af29eac6ba Move another test-only dependency to web/regression/requirements.txt 2017-03-02 09:18:45 +00:00
Atira Odhner e89c54c15d Make feature test app teardown more reliable, and tests faster
- don't spin up app and chromedriver between each test
    - catching signals also tears down the app
    - do layout reset between tests, but assume that tests will not leave a modal opened.

 Use selenium built-in waiting function and fix flakiness around clicking the alertify OK button

    - we think the OK button does not have its event bound when it is created.

If you see more flakiness around clicking the alertify OK button, let us know. The element is clickable but we have to arbitrarily wait for the event to be bound and that timing may vary system to system.

The feature tests are about 7 seconds faster now.

Tira & Joao
2017-03-01 13:20:06 +00:00
Dave Page 59c6be534d Typo fixes. 2017-03-01 12:49:15 +00:00
Khushboo Vashi ddb8bad201 Fix Sequence ACL SQL for PG 9.3/9.2. 2017-03-01 12:46:58 +00:00
Murtuza Zabuawala 480e00fddf Query tool efficiency.Convert the data as a 2D array instead of dict. Fixes #2036
Incremental back off when polling. Fixes #2038

Initial Patch By: Dave Page
2017-03-01 16:58:51 +05:30
Murtuza Zabuawala 6d438fec5e Ignore Visual Studio code editor files. 2017-03-01 10:03:19 +00:00
Atira Odhner 5fa1e83f0a Ensure feature tests use the TEST_SQLITE_PATH, not SQLITE_PATH. 2017-02-28 17:09:32 +00:00
Dave Page 76d5dccc46 Further fixes and cleanups to the Windows build script, including some Python 3 compatibility changes. 2017-02-28 17:02:01 +00:00
Atira Odhner 0cd914f3f9 Improve visibility of syntax highlighting colours. Fixes #2215 2017-02-28 15:08:36 +00:00
Murtuza Zabuawala e2e000a371 Remove a debug message. 2017-02-28 14:44:58 +00:00
Navnath Gadakh 1f935d699e Testsuite fixes for 9.3 and 9.2 support. 2017-02-28 14:22:10 +00:00
Dave Page bc521dfc49 Various fixes and cleanups to the Windows build script. 2017-02-28 13:03:50 +00:00
Dave Page 5dc2326e9d Consistent dialogue configuration 2017-02-27 14:58:22 +00:00
Dave Page 3638d63330 Move pgadmin plugins for codemirror back out of the vendor area. 2017-02-27 13:18:28 +00:00
Dave Page 206b9255c5 Fix CSS path. Fixes #2213 2017-02-27 12:39:13 +00:00
Dave Page 5a7a82b4e9 Simplify runtime startup polling, and increase retries to 30.
Ensure the splash screen is hidden before showing errors.
2017-02-27 10:49:47 +00:00
Dave Page 2ebd256307 Fix startup complete tests to ensure we properly poll the server for completed startup. Fixes #2192 2017-02-26 11:52:42 +00:00
Dave Page 074f7a805e Build a universal Python wheel instead of per-python-version ones. Fixes #2210 2017-02-26 10:01:23 +00:00
Dave Page 631ddff485 Remove unused imports. 2017-02-26 09:16:19 +00:00
Dave Page ec0099255a Use the correct requirements file when building the PIP package, and update the supported Python versions. 2017-02-26 09:14:22 +00:00
Dave Page 1e5de7e66e Merge the Python 2 & 3 requirements files, and break out test requirements into a separate file. 2017-02-26 09:06:17 +00:00
Dave Page 2f69916372 Add selenium to the Pip requirements for the automated tests. 2017-02-24 17:06:59 +00:00
Sarah McAlear a0a31e55ae Move 3rd party client code into vendor/ directories for ease of maintenance. 2017-02-24 17:01:21 +00:00
Dave Page b19081421b Ensure primary key column names are quoted in View Data mode of the Query Tool. Fixes #2208 2017-02-24 13:58:23 +00:00
Surinder Kumar 40ff651ef3 Fix display of boolean nulls in the query tool. Fixes #2205 2017-02-24 13:47:37 +00:00
Surinder Kumar 88cae263b2 Fix display of long integers and decimals. Fixes #2039. Fixes #2119. Fixes #2154 2017-02-24 13:39:40 +00:00
Surinder Kumar c0f2aab001 Ensure we never sort columns on the treeview. Fixes #2185 2017-02-24 13:02:13 +00:00
Harshal Dhumal b961b2d929 Fix function arguments when generating create SQL. Fixes #2198 2017-02-24 12:42:25 +00:00
Khushboo Vashi 0ba9b7db43 Add PARALLEL SAFE|UNSAFE|RESTRICTED support. Fixes #2089 2017-02-24 12:21:05 +00:00
Harshal Dhumal 1c09b57a1a Fix casting issue with dependents queries. 2017-02-24 10:48:46 +00:00
Harshal Dhumal 685b1ea12f Fix renaming of check constraints when the table name is changed at the same time. Fixes #2201 2017-02-24 10:44:43 +00:00
Harshal Dhumal 5e33fe4e95 Properly handle event trigger functions in different schemas. Fixes #2200 2017-02-24 10:40:11 +00:00
Atira Odhner fe1aec5de0 Add feature test framework, using selenium and chromedriver for UI testing.
Written by both George and Atira at Pivotal.
2017-02-22 12:41:28 +00:00
Murtuza Zabuawala 89137f57b2 Display un-sized varlen column types correctly in the query tool. Fixes #2151 2017-02-21 13:12:50 +00:00
George Gelashvili 03a161cc0a Don't try to decode connection error strings that are null. 2017-02-16 16:42:19 +00:00
Dave Page 03f292ce51 Tidy up the regression test output a little. 2017-02-16 11:40:54 +00:00
Dave Page 05d2373c9a Add a makefile target to run the regression tests. 2017-02-16 11:31:13 +00:00
Dave Page d9ddd64a8b Qt 5.8 seems to generate an additional header we should ignore. 2017-02-16 11:27:14 +00:00
Atira Odhner e3041f1113 Ensure the Mac Appbundle builds correctly both with and without code signing.
Correct current versions of Python/Qt while we're passing.
2017-02-16 11:25:32 +00:00
Murtuza Zabuawala 9ad1316990 Various encoding fixes. Fixes #2160 2017-02-16 11:00:40 +00:00
Surinder Kumar 833629d438 Fix exclusion constraint reverse engineered SQL. Fixes #2115 2017-02-16 10:54:21 +00:00
Surinder Kumar cbaad81f00 Correct node labels in Preferences for EDB functions and procedures. Fixes #2126 2017-02-16 10:47:28 +00:00
Atira Odhner b6486f3d42 Test suite runner enhancements:
To chase down a set of tests that were failing together, we wanted to run
deeper trees of tests. We changed the behavior of the --pkg argument to
runtests.py so it runs tests under a package and its subpackages, instead
of for a single node.

It gave us more flexibility in what tests to run. This also includes the
--exclude option.

To run tests for a single node, ".tests" can be appended to the package path.

Tira & George.
2017-02-15 15:10:31 +00:00
Dave Page 30a3167c0c Remove some inaccurate docs copy/pasted from pgAdmin 3. 2017-02-15 14:37:22 +00:00
Dave Page 78ff4faf68 Remove some inaccurate docs copy/pasted from pgAdmin 3. 2017-02-15 14:36:47 +00:00
Dave Page 40f2520fa6 Add comment to note command line qmake usage. 2017-02-13 12:08:36 +00:00
Dave Page e103b2b315 Allow the Python interpreter to be overridden on the build command line. 2017-02-13 12:07:25 +00:00
Dave Page 88aac7a4c9 Update the runtime build to allow users to force building with QtWebKit in Qt5, instead of QtWebEngine. 2017-02-13 11:44:53 +00:00
Dave Page ae10da4371 Another Python 3.x compatibility fix. 2017-02-13 10:27:16 +00:00
Dave Page 56bd1f6c05 Fix Python 2.6 compatibility. 2017-02-13 10:18:22 +00:00
Dave Page 14f181d2ba Fix Python 3 compatibility. 2017-02-13 10:07:38 +00:00
Atira Odhner 1340c1c2ee Make syntax highlighting more visible by making keywords and numbers bolder. 2017-02-13 10:05:54 +00:00
Atira Odhner ec9e8b79a3 Basic support for viewing tables in Greenplum. Patch from George & Tira @ Pivotal. 2017-02-13 10:02:20 +00:00
Ashesh Vashi 2f6a0e01da Ensure that PYTHONHOME is set for sub-processes such as the background executor. 2017-02-10 22:42:44 +00:00
Dave Page 24a3f3ab42 Reduce the default log level to something more sensible. 2017-02-10 21:33:57 +00:00
Dave Page d3232b2449 Fix runtime version number. 2017-02-10 12:02:42 +00:00
Dave Page 3697bf0a2c Update supported Python versions. 2017-02-09 12:53:44 +00:00
Murtuza Zabuawala 6887920295 Ensure FTS parsers and templates are removed prior to creating them when testing. 2017-02-09 12:05:55 +00:00
Murtuza Zabuawala c34fdaf37d Fix the issue with Jinja conditions in Foreign Data Wrappers, Foreign Servers, User Mapping.
I also did some re-formatting & re-factoring to code to remove all the duplicate code.
2017-02-09 12:05:09 +00:00
Dave Page 9aa479ea2e Spit out an exit code when running the regression tests. 2017-02-08 16:52:03 +00:00
Murtuza Zabuawala a914ea088c Python 2.6 compatibility fixes. 2017-02-08 16:28:04 +00:00
Dave Page e95dc5f895 Fix indentation 2017-02-08 11:40:43 +00:00
Dave Page 2dc0eab057 Update translation files. 2017-02-06 16:25:16 +00:00
Dave Page 5abd62389d Bump version for release. 2017-02-06 15:45:14 +00:00
Murtuza Zabuawala ec93077040 Compatibility fixes for newer versions of Jinja2 (e.g. 2.9.5+). Fixes #2156 2017-02-06 12:53:16 +00:00
Murtuza Zabuawala c96da34c28 Fix handling of "char" columns. Fixes #2152 2017-02-06 10:59:03 +00:00
Murtuza Zabuawala 4d8683e13a Fix display of graphical query plans for UPDATE/DELETE queries. Fixes #2133 2017-02-06 10:43:31 +00:00
Murtuza Zabuawala 3ea8a7b211 Fix column addition regression test. 2017-02-06 09:46:34 +00:00
Surinder Kumar 4566877188 Handle NULL booleans in the data editor. Fixes #1790 2017-02-05 11:06:48 +01:00
Ashesh Vashi b7c5039416 Fix process execution. Fixes #1679. Fixes #2144.
Re-engineer the background process executor, to avoid using sqlite as some builds of
components it relies on do not support working in forked children.
2017-02-04 15:26:57 +01:00
Dave Page 426ee40a71 Add some help on data editing. 2017-02-04 14:35:02 +01:00
Dave Page 3cc58cf3de Remove help text for an option that no longer exists. 2017-02-04 14:23:43 +01:00
Surinder Kumar 54ba1fbe59 Support setting text fields to empty strings or NULL in the data editor grid. Fixes #1790 2017-02-04 14:10:30 +01:00
Neel Patel c17e201a92 Handle saved directories that no longer exist gracefully. Fixes #2110 2017-02-03 15:19:21 +01:00
Murtuza Zabuawala bf8c3c4180 Handle sized time/timestamp columns correctly. Fixes #2076 2017-02-03 14:51:58 +01:00
Khushboo Vashi f2ac6fc6a7 1) Wrong tablespace displayed in table properties. Fixes #2069
2) Message (Connection to the server has been lost.) displayed with Materialized view and view under sql tab. Fixes #2139
2017-02-03 16:13:07 +05:30
Harshal Dhumal 4ef26a528b Allow direct navigation (i.e. typing of paths) in the file manager. Fixes #1911 2017-02-03 10:51:36 +01:00
Murtuza Zabuawala 687a793383 Fix display of zeros in read-only grid editors. Fixes #2138 2017-02-01 13:48:46 +00:00
Murtuza Zabuawala 2d442da9ff Properly handle setting comments and other options on databases with allowconn = False. Fixes #2024 2017-02-01 10:23:45 +00:00
George Gelashvili 6d05302ca1 Rename the 9.1_plus templates to "default" to more appropriately support Greenplum which is based on 8.3. 2017-02-01 09:57:49 +00:00
Murtuza Zabuawala 0da8d1fe4c Another Python 3 fix. 2017-01-31 12:12:22 +00:00
Navnath Gadakh fd53e0c527 Disable upgrade checks during regression testing. 2017-01-31 10:29:07 +00:00
Murtuza Zabuawala 2e5771e164 Python 3 fix for the template loader test. 2017-01-31 10:02:20 +00:00
Atira Odhner c6b67fc66a Bypass recovery checks with older servers. This is required for Greenplum which is based on PG 8.3 at present. 2017-01-30 17:02:55 +00:00
Surinder Kumar 30e546208f Ensure dialogues cannot be moved under the navbar. Fixes #2047 2017-01-30 14:02:01 +00:00
Murtuza Zabuawala e8f0cf6d94 Resolve various trigger issues. Fixes #2015
- Allow changing of row/statement flag
- When user update any of the parameter - trigger gets disappear from browser tree. To make it visible user  has to do refresh.
- Edit Mode - 'Row level' trigger was not allowed to edit for "inline edb-spl" trigger function, even though "Row Trigger" is enabled.
- SQL was not generated properly when user change 'Row Trigger', Fires and events.
- Edit Mode - Fires and Events should be allowed to edit for "inline edb-spl" function mentioned with Code in description.
- Edit Mode - For trigger, if user edit parameters like Fires, Events, Code, Row trigger etc. then new OID is getting generated so we should fetch and return new OID in response rather then old trigger OID.
2017-01-30 13:05:15 +00:00
George Gelashvili 19be3529f8 Create a template loader for SQL templates.
This will automatically find the correct version of a template for the server version, and allows us to remove templates that were previously duplicated for different server versions.

Patch by George & Tira at Pivotal. Review by me and Murtuza from EDB.

Discussion: https://www.postgresql.org/message-id/flat/CAHowoHaU9_pkCt%2B1g8dpY3hsXXZmsJZiJH-3-_Hd%2BC1MxiGhtA%40mail.gmail.com#CAHowoHaU9_pkCt+1g8dpY3hsXXZmsJZiJH-3-_Hd+C1MxiGhtA@mail.gmail.com
2017-01-30 11:25:03 +00:00
Dave Page 42d3121369 Request Six>=1.9.0 as the current version is 1.10.0 and it gets pre-installed in every new virtualenv. 2017-01-27 09:20:05 +00:00
Surinder Kumar e01cf748ea Enable/disable NULLs and ASC/DESC options for index columns and exclusion constraints appropriately. Fixes #2061. Fixes #1840. 2017-01-25 13:21:39 +00:00
Dave Page 2ebaf56cc4 Update copyright year. Fixes #2109 2017-01-25 09:05:13 +00:00
Murtuza Zabuawala 29a6f2e124 Fix Reset Statistics operation for which the popup messages weren't displaying correctly. Fixes #2091 2017-01-24 10:19:33 +00:00
Dave Page 801c7688a3 A little message cleanup. 2017-01-24 10:18:30 +00:00
George Gelashvili b4d4cffc60 Python 3 fix for the regression tests 2017-01-20 15:29:57 +00:00
Harshal Dhumal 415119d581 Properly remove any event listeners added by subnode control. 2017-01-20 13:24:37 +00:00
Dave Page ac4178233b Revert "Handle comments on databases with datallowconn=False correctly. Fixes #2024"
This reverts commit e431eb9d8e.
2017-01-20 13:21:05 +00:00
Dave Page ff199f4582 Fix typo in virtualenvwrapper's name. Fixes #2083 2017-01-18 09:33:52 +00:00
Murtuza Zabuawala 6557433061 Fix display of enum GUCs on users/databases etc. Fixes #2067 2017-01-17 10:45:01 +00:00
Murtuza Zabuawala 28621999f2 Improve display of columns of exclusion contraints and foreign keys in the properties lists. Fixes #2065 2017-01-17 10:25:26 +00:00
Murtuza Zabuawala e431eb9d8e Handle comments on databases with datallowconn=False correctly. Fixes #2024 2017-01-16 15:42:25 +00:00
Neel Patel 0d4bc0d27d Store layout changes on each adjustment, rather than on unload which is unreliable. Fixes #1967
We also use an async request now, rather than a deprecated sync request.
2017-01-16 15:34:55 +00:00
Khushboo Vashi 024b664c21 Improve the display of role membership on both the properties panel and role dialogue. Fixes #1730 2017-01-16 14:48:25 +00:00
Dave Page a85861ca57 Remove some comments that don't fit with our normal presentation of generated SQL. 2017-01-16 14:46:44 +00:00
Jonas Thelemann 2db705ad80 Add runtime/pgAdmin4 to .gitignore, and re-order entries for ease of maintenance. 2017-01-16 14:46:44 +00:00
Dave Page fe1d2f9805 Fix copyright year on doc page. Fixes #2045 2017-01-09 17:16:34 +05:30
Surinder Kumar 86f6857cb7 Fix sorting of numerics in the statistics grids. Fixes #1938 2017-01-09 15:55:38 +05:30
Murtuza Zabuawala 4c19f93b3b Use the correct OID for retrieving properties of freshly created exclusion constraints. Fixes #1896 2017-01-09 15:05:22 +05:30
Surinder Kumar e400693126 Add BigNumberJS library for upcoming large number related fixes. 2017-01-09 09:07:21 +05:30
Surinder Kumar b14f8239d2 Fix a SQL error when reverse-engineering ROLE SQL on EPAS servers. Fixes #1830 2017-01-09 08:14:34 +05:30
Khushboo Vashi 01b2288d57 Ensure columns with types that are not in pg_catalog are handled properly in the table dialog. 2017-01-09 08:05:51 +05:30
Surinder Kumar d05534ad6c Prevent attempts to access what may be an empty list. Fixes #1832 2017-01-09 07:56:02 +05:30
Neel Patel d87345ef52 Ensure breakpoints are cleared properly when clearing all of them. Fixes #1745 2017-01-08 19:05:13 +05:30
Navnath Gadakh 1325b30e0b Various improvements to the regression tests, notably avoiding use of signals unavailable on Windows. 2017-01-08 18:48:04 +05:30
Murtuza Zabuawala bdf9761472 Improve consistency of dialogue controls offered. Fixes #1364 2017-01-08 16:05:34 +05:30
Neel Patel 8d71e888b4 Remember the last used directory in the file manager. Fixes #1910 2017-01-08 15:27:59 +05:30
Dave Page 5d0a0e57e7 Allow selection of message box contents for ease of error message copy/paste. 2017-01-08 15:27:58 +05:30
Neel Patel 2787c5c207 Reset the column list properly if the access method is changed on an index to ensure error handling works correctly. Fixes #2009 2017-01-08 15:27:58 +05:30
Surinder Kumar 6e14bef801 Show icons for unique and exclusion constraints in the dependency/dependents panels. Fixes #2033 2017-01-08 15:27:58 +05:30
Murtuza Zabuawala 879a6bef53 Fix keyboard control of switches in the column grid. Fixes #1394 2017-01-08 15:27:58 +05:30
Neel Patel a33ee2ae32 Improve detection of the pldbgapi extension and functions before allowing debugging. Fixes #2026 2017-01-08 15:27:58 +05:30
Surinder Kumar e3c8cb2706 Prevent attempts to create server groups with no name. Fixes #2012 2017-01-08 15:27:58 +05:30
Akshay Joshi ae809c4506 Properly detect when files have changed in the query tool and set the dirty flag accordingly. Fixes #1807
Note that (like pgAdmin 3) we don't make any attempt to detect if all changes have been undone and completely reverted as that could be very expensive with large scripts.
2017-01-08 15:27:58 +05:30
Surinder Kumar 07e1c61eea Allow setting of effective_io_concurrency on tablespaces in 9.6+. Fixes #2000 2017-01-08 15:27:58 +05:30
Dave Page a93a99fdc0 Improve query plan tooltip formatting. 2017-01-06 15:38:27 +00:00
Dave Page 1504d05cdd Format JSON more efficiently. This can significantly reduce response sizes from the server. 2017-01-06 14:09:36 +00:00
Dave Page fe9bdc62a1 Fix copyright notices. 2017-01-04 13:35:38 +00:00
Dave Page 560395e557 Tidy up file header 2017-01-04 13:34:17 +00:00
Dave Page f221194bcc Update copyright notices for 2017. 2017-01-04 13:33:32 +00:00
Dave Page 87d4937726 Minimise memory requirements for rendered cells and rows in SlickGrid. Fixes #2035
- The CSS class 'slick-row' has been renamed to 'sr'

- The CSS class 'slick-cell' has been renamed to 'sc'

- The SQL Editor included an unused 'normal_row' class on each row which has been removed as it was unreferenced in the code or CSS.

The intent of these changes is to minimise memory usage by the grid, by saving a few bytes per row/cell.
It's questionable how much difference this actually makes given that SlickGrid updates the document so it
only includes the visible rows on the fly, but every little helps.
2016-12-22 17:43:42 +00:00
Murtuza Zabuawala 43b9e53572 Fix word wrap in note control. 2016-12-21 13:17:11 +00:00
Dave Page 99299f022f Fix time formatting on dashboards. Fixes #2032 2016-12-21 12:01:43 +00:00
Dave Page d3862eef3f Fix some additional table styling inconsistencies. 2016-12-19 14:26:33 +00:00
Dave Page ef5b8fe603 Clarify the close browser warning. 2016-12-19 12:12:43 +00:00
Khushboo Vashi 5008872203 Ensure the SQL editor has enough space to show block folding arrows in the gutter. 2016-12-19 11:35:27 +00:00
Harshal Dhumal 5adc6b71ca fix display of double scrollbars on the grant wizard. Fixes #2028 2016-12-19 09:25:14 +00:00
Harshal Dhumal 2994c128f3 Fix inconsistent table styling. Fixes #2027 2016-12-19 09:21:49 +00:00
Murtuza Zabuawala 6fc8f040ff Allow users to enable wrapping of code in SQL boxes. Fixes#2025 2016-12-16 17:07:41 +00:00
Khushboo Vashi 1d571902da Fix regression when generating SQL for new databases, caused by an invalid check of datallowconn introduced in the fix for #1801. 2016-12-16 13:12:12 +00:00
Khushboo Vashi 53ea991907 Properly size the SQL Editor gutter as the width of the line numbers increases. Fixes #1780 2016-12-16 13:04:16 +00:00
Murtuza Zabuawala 1431dfcb01 Show index columns in the correct order in RE-SQL. Fixes #1842 2016-12-16 11:59:37 +00:00
Akshay Joshi 686237413c Use more sensible column sizes for the data output in the query tool. Fixes #1789
Per Akshay:

I have tried to get the width of the content but we are sending complete data as collection to the SlickGrid. We will have to fetch the content of each column and figure out the maximum length for that column by iterating all the rows is too expensive. Apart from that to set the width in 'ch' we will have to do it using css. With current implementation we are setting the column option of the SlickGrid from javascript code.

I have fixed this issue by setting the width of the columns based on data type. I have set the width of boolean column to 60, all the numeric/integer columns to 80 and for all other data types it is 20% of the container width as 33% is too wide.
2016-12-12 10:13:53 +00:00
Khushboo Vashi 53481023fa Properly sort rows by the pkey when viewing first/last 100. Fixes #2007 2016-12-12 10:06:34 +00:00
Ashesh Vashi dbff4f7977 Minor Python 3/encoding fix in the file manager. 2016-12-12 09:49:00 +00:00
Dave Page f80f271e0c Only include the triggerWebViewWindowEvents declaration where appropriate. 2016-12-12 09:40:46 +00:00
Dave Page 4a280b2517 Only show the filename in query tool tabs, not the whole path. 2016-12-09 12:42:30 +00:00
Akshay Joshi b8d03d5dc2 Don't cast data when saving in the edit grid, so errors are seen and data doesn't get silently modified. Fixes #1994 2016-12-09 12:05:46 +00:00
Khushboo Vashi 81841cdb3c Treat databases with datallowconn=false appropriately. Fixes #1801 2016-12-09 11:59:13 +00:00
Anthony DeBarros 6ff2fe64b8 Fix various mis-spellings of VACUUM. Fixes #2005 2016-12-08 10:35:53 +00:00
Dave Page fb780bd81a Fix a couple of typos. 2016-12-06 10:35:15 +00:00
Dave Page eb337cadce Remove unused rows per page config option. 2016-12-05 13:59:44 +09:00
Akshay Joshi e160909423 Quote identifiers correctly in auto-complete. Fixes #1992 2016-12-05 13:15:03 +09:00
Surinder Kumar a64824a851 Fix various encoding issues with multibyte paths and filenames.
Fixes #1986. Fixes #1940.
2016-12-05 13:10:56 +09:00
Dave Page c4c3d2b6b8 Change the org name and product name to ensure the the runtime config file is sensibly named.
This changes the default orgname to 'pgadmin' and product name to 'pgadmin4' in the runtime.
2016-12-02 11:24:32 +09:00
Dave Page 58910c4b62 Allow the ApplicationPath to be absolute. 2016-12-02 11:10:08 +09:00
Neel Patel 4bde18685b Pass copy/cut/paste events from the runtime to the webview on Mac under QtWebEngine. 2016-11-29 14:18:39 +09:00
Neel Patel 54e6336a58 Deal with Function arguments correctly in the properties dialogue. Fixes #1979 2016-11-25 10:55:10 +00:00
Murtuza Zabuawala 66b9e22d01 Handle the template property on databases appropriately. Fixes #1800 2016-11-25 10:11:40 +00:00
Dave Page 394381bf75 Add search/replace support to the Query Tool, including regexp matching. Fixes #1765 2016-11-24 15:38:39 +00:00
Dave Page 89ed2a7deb Windows dependencies have changed with Qt 5.7 2016-11-24 11:34:53 +00:00
Dave Page 6f90fbc4df Use QT 5.7 by default on Mac, and allow builds with Python 3.5. 2016-11-24 09:19:50 +00:00
Dave Page 478c7ba7a4 Use QT 5.7 by default on Windows. 2016-11-24 09:18:15 +00:00
Dave Page 7983f53a7e Ignore generated resource files 2016-11-23 14:38:27 +00:00
Dave Page 87a845a082 Specify the default PG binpath on Windows 2016-11-23 14:37:02 +00:00
Dave Page f6f020036f Fix a missing escape char 2016-11-23 13:43:12 +00:00
Dave Page d7d0ff02c6 Specify the default PG binpath on Mac 2016-11-23 13:38:17 +00:00
Dave Page 1a18e07329 Allow a placeholder ($DIR) to be used in utility paths to make it easier to use relative paths. 2016-11-23 13:35:27 +00:00
Dave Page 08396ce861 Allow default binary paths to be set in the config for each database driver. 2016-11-23 12:44:13 +00:00
Dave Page 961f946a76 Treat empty text settings as unset, to allow users to clear a string to get the default back. 2016-11-23 12:43:02 +00:00
Dave Page 388b477c71 Bunlde PostgreSQL utilities in the Windows installer. Note that this doesn't yet auto-configure pgAdmin to find them. 2016-11-23 10:27:52 +00:00
Dave Page 9dcf61931a Include PostgreSQL utilities in the Mac App Bundle. This doesn't auto-configure pgAdmin to find them yet though. 2016-11-23 10:03:40 +00:00
Dave Page e2459b75bc Actually Flask-HTMLmin *does not* require django-htmlmin - but uninstalling the latter breaks the htmlmin package which may need to be reinstalled. 2016-11-21 13:46:32 +00:00
Dave Page 8ae4a10c64 Apparently Flask-HTMLmin still requires django-htmlmin 2016-11-21 13:37:52 +00:00
Dave Page 020bf1d532 Minify HTML with Flask-HTMLMIN 2016-11-18 16:42:38 +00:00
Dave Page d5351ad657 Add file resources to the windows runtime. Fixes #1874 2016-11-18 15:46:39 +00:00
Murtuza Zabuawala b7c819e912 Render column headers at the correct width in the query tool under Firefox. Fixes #1680 2016-11-18 14:24:16 +00:00
Khushboo Vashi 54b35c711d Ensure dialogue panels show their errors themselves, and not in the properties panel. Fixes #1855 2016-11-18 14:05:39 +00:00
Murtuza Zabuawala 6e5126d571 Add newly created triggers to the treeview. Fixes #1747 2016-11-18 13:58:35 +00:00
Murtuza Zabuawala 6e68e7501a Display messages and notices received in the query tool. Fixes #1953 2016-11-18 13:53:57 +00:00
Khushboo Vashi 6567669798 Ensure the check_option is only set when editing views when appropriate. Fixes #1924 2016-11-18 13:44:43 +00:00
Dave Page 29743ad3c4 Allow selection of process output and commands. 2016-11-18 12:05:19 +00:00
Dave Page 687f1f640f Prevent users selecting elements of the UI that shouldn't be selectable. Fixes #1976 2016-11-18 10:55:00 +00:00
Dave Page 8e60f33e65 Ensure the Mac Appbundle builds properly with QtWebEngine. 2016-11-17 16:22:45 +00:00
Dave Page bfbafaac4b Update the Windows installer build to support QtWebEngine 2016-11-17 10:59:41 +00:00
Dave Page ca9d04a60c Clarify and correct dashboard graph descriptions. 2016-11-16 17:09:16 +00:00
Dave Page 3abfebce1a Create a docs tarball along with the source tarball. Fixes #1964 2016-11-16 10:39:03 +00:00
lambda e3c8b67767 Add a Chinese (Simplified) translation. Fixes #1963 2016-11-16 09:45:22 +00:00
lambda 3e541ecb41 Add a Chinese (Simplified) translation. Fixes #1963 2016-11-16 09:40:56 +00:00
Khushboo Vashi 48b0a3f2d2 Ensure treeview collection nodes are translated in the UI. Fixes #1962 2016-11-16 09:25:38 +00:00
Daniel Hahler c0da81e8ec Fix upgrade check on Python 3. Fixes #1961 2016-11-16 09:13:59 +00:00
Khushboo Vashi 12d75e0a51 Styling improvements for password input fields in backgrid. 2016-11-15 09:55:32 +00:00
Dave Page 7ce04bbaea Add missing translation tags. 2016-11-15 09:31:39 +00:00
Khushboo Vashi 83a1808bfd Move some DOM elements out of the global context. 2016-11-14 13:13:58 +00:00
Dave Page 052a9fc840 Add missing strings from the dashboards. 2016-11-14 12:04:28 +00:00
Dave Page 74e5b5a492 Include SQL templates in the translation template. 2016-11-14 11:53:20 +00:00
Murtuza Zabuawala 00d2ab0338 Cast OIDs to oid not int, otherwise we lose half the range which results in objects not being accessible. Fixes #1951 2016-11-11 14:36:41 +00:00
Murtuza Zabuawala 6f30cabdbb Resolve various debugger quirks. Fixes #1227
- Prevent the user from executing multiple options at once, resulting in "Execute cannot be used while an asynchronous query is underway********** Error ****" messages

- Stop polling when debugging is complete.

- Don't show the busy cursory when debugging is complete.

- Display info messages properly, and reset them between executions.
2016-11-11 14:25:11 +00:00
Murtuza Zabuawala f405cdf383 Ensure trigger function names are schema qualified in trigger RE-SQL. Fixes #1949 2016-11-11 13:46:06 +00:00
Dave Page d5361a62cb Fix a fairly improtant typo! 2016-11-11 10:55:31 +00:00
Navnath Gadakh 7b574b284d Fix TypeError. 2016-11-10 12:48:38 +00:00
Murtuza Zabuawala 36c909b1f9 Generate mSQL for new schemas correctly. Fixes #1937 2016-11-09 15:13:17 +00:00
Murtuza Zabuawala c345adaa52 Properly format arguments passed by triggers to functions. Fixes #1912 2016-11-09 15:00:35 +00:00
Susan Douglas 2c85850db1 Query tool doc update 2016-11-09 09:48:44 +00:00
Dave Page 297733634b Use a more reasonable dynamic default for the window size (90% x 90%). Fixes #1939 2016-11-08 11:37:57 +00:00
Neel Patel 6e5683064e Use QtWebEngine with Qt5.5+ instead of QtWebKit. Fixes #1375, fixes #1641,
fixes #1916, fixes #1815, fixes #1332
2016-11-08 10:57:42 +00:00
Akshay Joshi 7da3ece169 Ensure all changes to rows are stored in the data editor. Fixes #1919 2016-11-07 15:07:43 +00:00
Dave Page ca333ea6a7 Don't strip \r\n from "Download as CSV" batches of rows, as it leads to malformed data. Fixes #1936 2016-11-07 14:47:50 +00:00
Dave Page 7f940bb13a Add a note to not update AlertifyJS beyond v1.7.1 as it's changed to GPL3 in 1.8.0 2016-11-07 14:05:37 +00:00
Dave Page 8bb656c002 Translation catalog update. 2016-11-07 12:45:13 +00:00
Dave Page f736051309 Handle broken config databases much more gracefully. Fixes #1922 2016-11-02 17:00:26 +02:00
Dave Page 5be9d5f054 Fixes #1909 Handle startup errors more gracefully in the runtime 2016-11-02 13:42:08 +05:30
Akshay Joshi c2d9c0bb7c Improve display of role options. Fixes #1729 2016-11-01 11:44:32 +02:00
Murtuza Zabuawala a3622a380a Fix display of exclusion contraint dependencies. Partially fixes #1892 - requires icon display fix. 2016-11-01 11:35:09 +02:00
Murtuza Zabuawala ca57323ad1 Properly schema qualify domains when reverse engineering SQL. Fixes #1865 2016-10-28 16:45:06 +01:00
Murtuza Zabuawala 67e5dfa5a7 Fix refreshing of Unique constraints. Fixes #1893 2016-10-28 16:40:27 +01:00
Murtuza Zabuawala 8c48be3b0c Properly quote role names when specifying function ownership. Fixes #1899 2016-10-28 16:18:31 +01:00
Susan Douglas 6c45eea1a0 Package and synonym doc update. 2016-10-27 09:45:28 +01:00
Dave Page 60a0ed61b0 Improve the README to include comprehensive information on:
- Building the runtime
- Setting up the Python environment
- Configuring the runtime
- Building packages
2016-10-26 12:40:17 +01:00
Dave Page 4a5031c563 Fix typo in 32bit-only code 2016-10-26 10:30:24 +01:00
3418 changed files with 272610 additions and 259693 deletions

No files matched your search

+34 -23
View File
@@ -1,34 +1,45 @@
*.autosave
*.db
*.diff
*.o
*.patch
*.psp
*.pyc
*.pyo
*.o
*.psp
*.diff
*.patch
*.autosave
_build
build-*
*.swo
*.swp
.DS_Store
.idea
.vscode
/dist
/docker-build
/mac-build
/pip-build
/src-build
/win-build
_build
build-*
pgadmin4.log
pkg/win32/installer.iss
pkg/mac/codesign.conf
pkg/mac/framework.conf
runtime/.qmake.cache
runtime/.qmake.stash
runtime/Makefile
runtime/moc_BrowserWindow.cpp
runtime/Makefile.Debug
runtime/Makefile.Release
runtime/moc_TrayIcon.cpp
runtime/moc_Server.cpp
runtime/pgAdmin4.app/
runtime/pgAdmin4.pro.user*
runtime/ui_BrowserWindow.h
runtime/.qmake.stash
web/config_local.py
web/regression/test_config.json
pgadmin4.log
*.swp
*.swo
/mac-build
/src-build
/pip-build
/win-build
/dist
pkg/win32/installer.iss
runtime/Makefile.Debug
runtime/Makefile.Release
runtime/pgAdmin4_resource.rc
runtime/release/
runtime/ui_BrowserWindow.h
web/config_local.py
web/geckodriver.log
web/regression/test_config.json
node_modules/
web/pgAdmin/static/js/generated
web/pgadmin/static/js/generated
web/yarn-error.log
/web/cacert.pem
+9
View File
@@ -0,0 +1,9 @@
[pycodestyle]
ignore = E402,W504,W605
max-line-length = 79
statistics = True
show-source = False
show-pep8 = False
count = True
format = pylint
exclude = migrations,node_modules,config_local.py,config_distro.py
+19 -19
View File
@@ -1,19 +1,19 @@
pgAdmin 4
Copyright (c) 2013 - 2016, The pgAdmin Development Team
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement is
hereby granted, provided that the above copyright notice and this paragraph and
the following two paragraphs appear in all copies.
IN NO EVENT SHALL THE PGADMIN DEVELOPMENT TEAM BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
THE PGADMIN DEVELOPMENT TEAM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE PGADMIN DEVELOPMENT TEAM SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
THE PGADMIN DEVELOPMENT TEAM HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
pgAdmin 4
Copyright (C) 2013 - 2019, The pgAdmin Development Team
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement is
hereby granted, provided that the above copyright notice and this paragraph and
the following two paragraphs appear in all copies.
IN NO EVENT SHALL THE PGADMIN DEVELOPMENT TEAM BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
THE PGADMIN DEVELOPMENT TEAM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE PGADMIN DEVELOPMENT TEAM SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
THE PGADMIN DEVELOPMENT TEAM HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+383 -520
View File
@@ -1,520 +1,383 @@
@ECHO off
SETLOCAL
REM
REM ****************************************************************
SET WD=%CD%
SET "PGBUILDPATH=%WD%\win-build"
SET CMDOPTION=""
IF "%1" == "clean" SET CMDOPTION="VALID"
IF "%1" == "x86" SET CMDOPTION="VALID"
IF "%1" == "amd64" SET CMDOPTION="VALID"
IF NOT %CMDOPTION%=="VALID" ( GOTO USAGE )
SET ARCHITECTURE=%1
IF "%ARCHITECTURE%"=="clean" (
GOTO CLEAN_RELEASE
goto:exit
)
REM Main Functions
call :SET_PGADMIN4_ENVIRONMENT
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call :CLEAN_RELEASE
call :CREATE_VIRTUAL_ENV
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call :CREATE_RUNTIME_ENV
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call :CREATE_PYTHON_ENV
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call :CLEANUP_ENV
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call :CREATE_INSTALLER
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call :SIGN_INSTALLER
CD %WD%
goto:EXIT
REM Main function Ends
:CLEAN_RELEASE
ECHO Calling clean target...
IF EXIST "%PGBUILDPATH%" rd "%PGBUILDPATH%" /S /Q
FOR /R "%WD%" %%f in (*.pyc *.pyo) do DEL /q "%%f" > nul
IF EXIST "%WD%\pkg\win32\Output" rd "%WD%\pkg\win32\Output" /S /Q
IF EXIST DEL /q "%WD%\pkg\win32\installer.iss" > nul
CD %WD%
GOTO:EOF
:SET_PGADMIN4_ENVIRONMENT
REM Check os architecture x86 or amd64
SET RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% > checkOS.txt
Find /i "x86" < CheckOS.txt > StringCheck.txt
SET OSTYPE=""
IF %ERRORLEVEL% == 0 (
SET OSTYPE=x86
) else (
SET OSTYPE=amd64
)
DEL CheckOS.txt StringCheck.txt
SET OSVALUE=""
IF "%OSTYPE%"=="x86" (
IF "%ARCHITECTURE%"=="amd64" (
ECHO ARCHITECTURE - %ARCHITECTURE% cannot be run on 32 bit machine
goto:exit
)
OSVALUE=%OSTYPE%
)
REM Check IF its is windows 32 bit machine and selected architecture is x86
IF %OSVALUE%=="x86" (
IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27123"
IF "%PYTHON_DLL%" == "" SET "PYTHON_DLL=C:\Windows\System32\python27.dll"
IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\Qt5.5.1\5.5\msvc2013"
IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files\Inno Setup 5"
IF "%VCDIR%" == "" SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
SET "VCREDISTNAME=vcredist_x86.exe"
goto SKIPARCVALIDATION
)
REM Check IF its is windows 64 bit machine and selected architecture is x86 or amd64
IF "%ARCHITECTURE%"=="x86" (
IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27"
IF "%PYTHON_DLL%" == "" SET "PYTHON_DLL=C:\Windows\SysWOW64\python27.dll"
IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\Qt5.5.1\5.5\msvc2013"
IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files (x86)\PostgreSQL\9.5"
IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files (x86)\Inno Setup 5"
IF "%VCDIR%" == "" SET "VCDIR=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC"
IF "%VCREDIST%" == "" SET "VCREDIST=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\1033\vcredist_x86.exe"
SET "VCREDISTNAME=vcredist_x86.exe"
)
IF "%ARCHITECTURE%"=="amd64" (
IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27-x64"
IF "%PYTHON_DLL%" == "" SET "PYTHON_DLL=C:\Windows\System32\python27.dll"
IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.5\msvc2013"
IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files\Inno Setup 5"
IF "%VCDIR%" == "" SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
IF "%VCREDIST%" == "" SET "VCREDIST=C:\Program Files\Microsoft Visual Studio 12.0\VC\redist\1033\vcredist_x64.exe"
SET "VCREDISTNAME=vcredist_x64.exe"
)
:SKIPARCVALIDATION
REM SET the variables IF not availalbe in windows enviroment
SET "VCVAR=%VCDIR%\vcvarsall.bat"
SET "VCNMAKE=%VCDIR%\bin\nmake.exe"
SET "QMAKE=%QTDIR%\bin\qmake.exe"
SET "VIRTUALENV=venv"
SET "TARGETINSTALLER=%WD%\dist"
SET "VCREDIST=%VCDIR%\redist\1033\%VCREDISTNAME%"
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py') DO SET APP_RELEASE=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py') DO SET APP_REVISION_VERSION=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py') DO SET APP_SUFFIX_VERSION=%%a
REM remove single quote from the string
SET APP_SUFFIX_VERSION=%APP_SUFFIX_VERSION:'=%
SET APP_NAME=""
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py') DO SET APP_NAME=%%a
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "print '%APP_NAME%'.lower().replace(' ', '')"') DO SET APP_SHORTNAME=%%G
SET INSTALLERNAME=%APP_SHORTNAME%-%APP_RELEASE%.%APP_REVISION_VERSION%-%APP_SUFFIX_VERSION%-%ARCHITECTURE%.exe
IF "%APP_SUFFIX_VERSION%" == "" SET INSTALLERNAME=%APP_SHORTNAME%-%APP_RELEASE%.%APP_REVISION_VERSION%-%ARCHITECTURE%.exe
SET PGADMIN4_VERSION=v%APP_RELEASE%
SET PGADMIN4_APP_VERSION=%APP_RELEASE%.%APP_REVISION_VERSION%
ECHO ****************************************************************
ECHO S U M M A R Y
ECHO ****************************************************************
ECHO Target mode = %ARCHITECTURE%
ECHO INNOTOOL = %INNOTOOL%
ECHO VCDIR = %VCDIR%
ECHO VCDIST = %VCREDIST%
ECHO NMAKE = %VCNMAKE%
ECHO QTDIR = %QTDIR%
ECHO QMAKE = %QMAKE%
ECHO PYTHON_HOME = %PYTHON_HOME%
ECHO PYTHON_DLL = %PYTHON_DLL%
ECHO PGDIR = %PGDIR%
ECHO ****************************************************************
REM Check IF path SET in enviroments really exist or not ?
IF NOT EXIST "%INNOTOOL%" GOTO err_handle_inno
IF NOT EXIST "%VCDIR%" GOTO err_handle_visualstudio
IF NOT EXIST "%VCREDIST%" GOTO err_handle_visualstudio_dist
IF NOT EXIST "%VCVAR%" GOTO err_handle_visualstudio
IF NOT EXIST "%VCNMAKE%" GOTO err_handle_visualstudio
IF NOT EXIST "%QTDIR%" GOTO err_handle_qt
IF NOT EXIST "%QMAKE%" GOTO err_handle_qt
IF NOT EXIST "%PYTHON_HOME%" GOTO err_handle_python
IF NOT EXIST "%PYTHON_DLL%" GOTO err_handle_python
IF NOT EXIST "%PGDIR%" GOTO err_handle_pg
REM Check for QT and VC dependences
FOR /L %%G IN (15,1,19) DO "%VCDIR%\bin\cl.exe" /? 2>&1 | findstr /C:"Version %%G" > nul && SET MSVC_MAJOR_VERSION=%%G && GOTO QT_MSVC
:QT_MSVC
IF %MSVC_MAJOR_VERSION%==19 SET QT_MSVC_PATH=msvc2015
IF %MSVC_MAJOR_VERSION%==18 SET QT_MSVC_PATH=msvc2013
IF %MSVC_MAJOR_VERSION%==17 SET QT_MSVC_PATH=msvc2012
IF %MSVC_MAJOR_VERSION%==16 SET QT_MSVC_PATH=msvc2010
IF %MSVC_MAJOR_VERSION%==15 SET QT_MSVC_PATH=msvc2008
REM on 64 bit machine if x86 is selected and QTDIR is set to 64 bit is should not allow
IF "%OSTYPE%"=="amd64" (
IF "%ARCHITECTURE%"=="x86" (
echo "%QTDIR%" | findstr /C:"_64" > nul && ( GOTO err_handle_qt_compactissue )
)
)
IF "%ARCHITECTURE%"=="amd64" (
SET QT_MSVC_PATH=%QT_MSVC_PATH%_64
)
IF NOT EXIST "%QTDIR%\..\%QT_MSVC_PATH%" GOTO err_handle_qt_mismatch
REM get Python version ex. 2.7.1 will get as 27
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print sys.version.split(' ')[0]"') DO SET PYTHON_MAJOR=%%G
FOR /f "tokens=2 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print sys.version.split(' ')[0]"') DO SET PYTHON_MINOR=%%G
SET "PYTHON_VERSION=%PYTHON_MAJOR%%PYTHON_MINOR%"
IF NOT EXIST "%PYTHON_HOME%\Scripts\virtualenv.exe" GOTO err_handle_pythonvirtualenv
SET REQUIRMENTTXT=""
IF "%PYTHON_MAJOR%"=="2" SET REQUIRMENTTXT=requirements_py2.txt
IF "%PYTHON_MAJOR%"=="3" SET REQUIRMENTTXT=requirements_py3.txt
IF %REQUIRMENTTXT% == "" GOTO err_handle_pythonversion
SET PATH=%PGDIR%;%PGDIR%\bin;%PATH%
goto:EXIT
:CREATE_VIRTUAL_ENV
ECHO Creating Virtual Enviroment...
IF NOT EXIST "%PGBUILDPATH%" MKDIR "%PGBUILDPATH%"
CD "%PGBUILDPATH%"
"%PYTHON_HOME%\Scripts\virtualenv.exe" "%VIRTUALENV%"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
ECHO Activating Virtual Enviroment - %PGBUILDPATH%\%VIRTUALENV%\Scripts\activate...
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\activate"
SET PATH=%PGDIR%\bin;%PATH%
ECHO Installing dependencies...
pip install -r "%WD%\%REQUIRMENTTXT%"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
pip install sphinx
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
ECHO Virtual Enviroment created successfully.
ECHO Deactivating Virtual Enviroment - %PGBUILDPATH%\%VIRTUALENV%\Scripts\deactivate...
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\deactivate"
CD %WD%
GOTO:EOF
:CREATE_RUNTIME_ENV
ECHO Compiling source code...
MKDIR "%PGBUILDPATH%\runtime" > nul
REM --- Processing WEB ---
CD "%WD%"
CD web
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
XCOPY /S /I /E /H /Y "%WD%\web" "%PGBUILDPATH%\web" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
REM Clean up .pyc, .pyo, pgadmin4.db, config_local.py
ECHO Cleaning up unnecessary files...
FOR /R "%PGBUILDPATH%\web" %%f in (*.pyc *.pyo) do DEL /q "%%f"
DEL /q "%PGBUILDPATH%\web\pgadmin4.db"
DEL /q "%PGBUILDPATH%\web\config_local.py"
ECHO Creating config_distro.py
ECHO SERVER_MODE = False > "%PGBUILDPATH%\web\config_distro.py"
ECHO HELP_PATH = '../../../docs/en_US/html/' >> "%PGBUILDPATH%\web\config_distro.py"
ECHO MINIFY_HTML = False >> "%PGBUILDPATH%\web\config_distro.py"
ECHO Building docs...
MKDIR "%PGBUILDPATH%\docs\en_US\html"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
"%PGBUILDPATH%\%VIRTUALENV%\Scripts\sphinx-build.exe" "%WD%\docs\en_US" "%PGBUILDPATH%\docs\en_US\html"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
ECHO Removing Sphinx
pip uninstall -y sphinx
ECHO Assembling runtime environment...
CD "%WD%"
CD runtime
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call "%VCVAR%" %ARCHITECTURE%
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
ECHO Calling - call "%VCVAR%" %ARCHITECTURE%
call "%QMAKE%"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call "%VCNMAKE%" clean
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
call "%VCNMAKE%"
IF ERRORLEVEL 1 GOTO ERR_HANDLER
REM Copy binary to Release Folder
copy "%WD%\runtime\release\pgAdmin4.exe" "%PGBUILDPATH%\runtime"
IF ERRORLEVEL 1 GOTO ERR_HANDLER
REM Copy QTP dependences
copy "%QTDIR%\bin\icudt54.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\icuin54.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\icuuc54.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Core.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Sql.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Gui.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Qml.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5OpenGL.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Quick.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Sensors.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Widgets.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebKit.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Network.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Multimedia.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebChannel.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Positioning.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5PrintSupport.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebKitWidgets.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5MultimediaWidgets.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
MKDIR "%PGBUILDPATH%\runtime\platforms"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\plugins\platforms\qwindows.dll" "%PGBUILDPATH%\runtime\platforms" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
ECHO [Paths] > "%PGBUILDPATH%\runtime\qt.conf"
ECHO Plugins=plugins >> "%PGBUILDPATH%\runtime\qt.conf"
copy "%PGDIR%\bin\libpq.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\ssleay32.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\libeay32.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\libintl-*.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\libiconv-*.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
MKDIR "%PGBUILDPATH%\installer"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%VCREDIST%" "%PGBUILDPATH%\installer" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
ECHO Runtime built successfully.
CD %WD%
GOTO:EOF
:CREATE_PYTHON_ENV
copy %PYTHON_DLL% "%PGBUILDPATH%\runtime" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
REM Copy Python interpretor as it's needed to run background processes
copy %PYTHON_HOME%\python.exe "%PGBUILDPATH%\runtime" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy %PYTHON_HOME%\pythonw.exe "%PGBUILDPATH%\runtime" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\DLLs" "%PGBUILDPATH%\%VIRTUALENV%\DLLs" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\Lib" "%PGBUILDPATH%\%VIRTUALENV%\Lib" > nul
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
CD %WD%
GOTO:EOF
:CREATE_INSTALLER
ECHO Preparing for creation of windows installer...
IF NOT EXIST "%TARGETINSTALLER%" MKDIR "%TARGETINSTALLER%"
copy "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%PGBUILDPATH%"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
CD "%WD%"
CD pkg
CD win32
"%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_NAME -r """%APP_NAME%"""
"%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_FULLVERSION -r """%PGADMIN4_APP_VERSION%"""
"%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss.in_stage3" "-s" MYAPP_VERSION -r """%PGADMIN4_VERSION%"""
set ARCMODE=
IF "%ARCHITECTURE%"=="amd64" (
set ARCMODE="x64"
)
"%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage3" "-o" "%WD%\pkg\win32\installer.iss.in_stage4" "-s" MYAPP_ARCHITECTURESMODE -r """%ARCMODE%"""
"%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage4" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%VCREDISTNAME%"""
DEL /s "%WD%\pkg\win32\installer.iss.in_stage*" > nul
ECHO Creating windows installer... using INNO tool
CALL "%INNOTOOL%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
MOVE "%WD%\pkg\win32\Output\Setup.exe" "%TARGETINSTALLER%\%INSTALLERNAME%"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
ECHO "Location - %TARGETINSTALLER%\%INSTALLERNAME%"
ECHO Installer generated successfully.
CD %WD%
GOTO:EOF
:SIGN_INSTALLER
ECHO Attempting to sign the installer...
signtool sign /t http://timestamp.verisign.com/scripts/timstamp.dll "%TARGETINSTALLER%\%INSTALLERNAME%"
IF %ERRORLEVEL% NEQ 0 (
ECHO
ECHO ************************************************************
ECHO * Failed to sign the installer
ECHO ************************************************************
SLEEP 5
)
CD %WD%
GOTO:EOF
:CLEANUP_ENV
ECHO Cleaning up private environment...
rd "%PGBUILDPATH%\%VIRTUALENV%\Include" /S /Q
rd "%PGBUILDPATH%\%VIRTUALENV%\Scripts" /S /Q
DEL /s "%PGBUILDPATH%\%VIRTUALENV%\pip-selfcheck.json"
ECHO Cleaned up private environment successfully.
CD %WD%
GOTO:EOF
:err_handle_inno
ECHO %INNOTOOL% does not exist
ECHO Please Install Innotool and SET INNOTOOL enviroment Variable.
ECHO SET "INNOTOOL=<PATH>"
exit /B 1
goto EXIT
:err_handle_visualstudio
ECHO %VCDIR% does not exist, or
ECHO %VCVAR% does not exist, or
ECHO %VCNMAKE% does not exist.
ECHO Please Install Microsoft Visual studio and SET the VCDIR enviroment Variable.
ECHO SET "VCDIR%=<PATH>"
ECHO SET "VCVAR%=<PATH>"
ECHO SET "VCNMAKE%=<PATH>"
exit /B 1
goto EXIT
:err_handle_visualstudio_dist
ECHO %VCREDIST% does not exist
ECHO Please Install Microsoft Visual studio and SET the VCDIST enviroment Variable.
ECHO SET "VCDIST%=<PATH>"
exit /B 1
goto EXIT
:err_handle_python
ECHO %PYTHON_HOME% does not exist, or
ECHO PYTHON_VERSION is not SET, or
ECHO %PYTHON_DLL% does not exist.
ECHO Please install Python and SET the PYTHON_HOME enviroment Variable.
ECHO SET "PYTHON_VERSION=<VERSION NUMBER>"
ECHO SET "PYTHON_HOME=<PATH>"
ECHO SET "PYTHON_DLL=<PATH>"
exit /B 1
goto EXIT
:err_handle_qt
ECHO %QTDIR% does not exist.
ECHO Please Install QT SDK and SET the QTDIR enviroment variable.
ECHO SET "QTDIR=<PATH>"
exit /B 1
goto EXIT
:err_handle_qt_mismatch
ECHO %QTDIR%\..\%QT_MSVC_PATH%" does not match with your current Visual Studio, version %QT_MSVC_PATH%
ECHO Your current QT installation willraise a linking error with an MSVC version mismatch.
ECHO Please use a valid QT installation with a folder %QT_MSVC_PATH%. You can use the Qt Maintenance
ECHO Tool to add or remove compiler kits.
exit /B 1
goto EXIT
:err_handle_qt_compactissue
ECHO %QTDIR%" does support the current architecture selected %ARCHITECTURE%
ECHO Please use a valid QT installation with a folder %QT_MSVC_PATH%. You can use the Qt Maintenance
ECHO Tool to add or remove compiler kits.
exit /B 1
goto EXIT
:err_handle_pg
ECHO %PGDIR% does not exist.
ECHO Please Install Postgres and SET enviroment Variable
ECHO SET "PGDIR=<PATH>"
exit /B 1
goto EXIT
:err_handle_pythonversion
ECHO Python version supported Above 2.6, 2.xx and 3.xx only
exit /B 1
goto EXIT
:err_handle_pythonvirtualenv
ECHO Python virtualenv is missing @ location - %PYTHON_HOME%\Scripts\virtualenv.exe
exit /B 1
goto EXIT
:ERR_HANDLER
ECHO.
ECHO Aborting build!
CD %WD%
exit /B 1
GOTO:EOF
:USAGE
ECHO Invalid command line options....
ECHO Usage: "Make.bat <x86 | amd64 | clean>"
ECHO.
exit /B 1
GOTO EXIT
:EXIT
endlocal
exit /B 0
@ECHO off
SETLOCAL
SET WD=%CD%
SET "PGBUILDPATH=%WD%\win-build"
SET CMDOPTION=""
IF "%1" == "clean" SET CMDOPTION="VALID"
IF "%1" == "x86" SET CMDOPTION="VALID"
IF NOT %CMDOPTION%=="VALID" (
GOTO USAGE
)
SET ARCHITECTURE=%1
IF "%ARCHITECTURE%"=="clean" (
CALL :CLEAN
EXIT /B %ERRORLEVEL%
)
REM Main build sequence
CALL :SET_ENVIRONMENT
CALL :VALIDATE_ENVIRONMENT || EXIT /B 1
CALL :CLEAN || EXIT /B 1
CALL :CREATE_VIRTUAL_ENV || EXIT /B 1
CALL :CREATE_RUNTIME_ENV || EXIT /B 1
CALL :CREATE_PYTHON_ENV || EXIT /B 1
CALL :CLEANUP_ENV || EXIT /B 1
CALL :CREATE_INSTALLER || EXIT /B 1
CALL :SIGN_INSTALLER || EXIT /B 1
EXIT /B %ERRORLEVEL%
REM Main build sequence Ends
:CLEAN
ECHO Removing build directory...
IF EXIST "%PGBUILDPATH%" RD "%PGBUILDPATH%" /S /Q > nul || EXIT /B 1
ECHO Removing temp build directory...
IF EXIST "%WD%\pkg\win32\Output" rd "%WD%\pkg\win32\Output" /S /Q > nul || EXIT /B 1
ECHO Removing installer configuration script...
IF EXIST DEL /q "%WD%\pkg\win32\installer.iss" > nul || EXIT /B 1
EXIT /B 0
:SET_ENVIRONMENT
ECHO Configuring the environment...
IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27"
IF "%PYTHON_DLL%" == "" SET "PYTHON_DLL=C:\Windows\SysWOW64\python27.dll"
IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.9.1\mingw53_32"
IF "%MAKE%" == "" SET "MAKE=mingw32-make.exe"
IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files (x86)\PostgreSQL\10"
IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files (x86)\Inno Setup 5"
IF "%VCREDIST%" == "" SET "VCREDIST=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\1033\vcredist_x86.exe"
IF "%SIGNTOOL%" == "" SET "SIGNTOOL=C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe"
REM Set VCREDISTNAME (the filename)
for /f "delims=" %%i in ("%VCREDIST%") do set "VCREDISTNAME=%%~nxi"
REM Set additional variables we need
SET "QMAKE=%QTDIR%\bin\qmake.exe"
FOR /F "tokens=4,5 delims=. " %%a IN ('%QMAKE% -v ^| findstr /B /C:"Using Qt version "') DO SET QT_VERSION=%%a.%%b
SET "VIRTUALENV=venv"
SET "TARGET_DIR=%WD%\dist"
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py') DO SET APP_MAJOR=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py') DO SET APP_MINOR=%%a
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py') DO SET APP_VERSION_SUFFIX=%%a
REM remove single quote from the string
SET APP_VERSION_SUFFIX=%APP_VERSION_SUFFIX:'=%
SET APP_NAME=""
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py') DO SET APP_NAME=%%a
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "print('%APP_NAME%'.lower().replace(' ', ''))"') DO SET APP_SHORTNAME=%%G
SET APP_VERSION=%APP_MAJOR%.%APP_MINOR%
SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%APP_VERSION_SUFFIX%-%ARCHITECTURE%.exe
IF "%APP_VERSION_SUFFIX%" == "" SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%ARCHITECTURE%.exe
REM get Python version for the runtime build ex. 2.7.1 will be 27
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MAJOR=%%G
FOR /f "tokens=2 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MINOR=%%G
SET "PYTHON_VERSION=%PYTHON_MAJOR%%PYTHON_MINOR%"
EXIT /B 0
:VALIDATE_ENVIRONMENT
ECHO ****************************************************************
ECHO S U M M A R Y
ECHO ****************************************************************
ECHO Build path: %PGBUILDPATH%
ECHO Output directory: %TARGET_DIR%
ECHO Installer name: %INSTALLERNAME%
ECHO.
ECHO Python home: %PYTHON_HOME%
ECHO Python DLL: %PYTHON_DLL%
ECHO Python version: %PYTHON_VERSION%
ECHO Python major version: %PYTHON_MAJOR%
ECHO Python minor version: %PYTHON_MINOR%
ECHO.
ECHO Qt home: %QTDIR%
ECHO qmake executable: %QMAKE%
ECHO Qt version: %QT_VERSION%
ECHO.
ECHO PostgreSQL home: %PGDIR%
ECHO.
ECHO VC++ redistributable: %VCREDIST%
ECHO VC++ redistributable file: %VCREDISTNAME%
ECHO.
ECHO innotool executable: %INNOTOOL%
ECHO signtool executable: %SIGNTOOL%
ECHO.
ECHO App major version: %APP_MAJOR%
ECHO App minor version: %APP_MINOR%
ECHO App version: %APP_VERSION%
ECHO App version suffix: %APP_VERSION_SUFFIX%
ECHO App short name: %APP_SHORTNAME%
ECHO App name: %APP_NAME%
ECHO ****************************************************************
ECHO Checking the environment...
IF NOT EXIST "%INNOTOOL%" (
ECHO !INNOTOOL! does not exist
ECHO Please install Innotool and set the INNOTOOL environment variable.
EXIT /B 1
)
IF NOT EXIST "%VCREDIST%" (
ECHO !VCREDIST! does not exist
ECHO Please install Microsoft Visual studio and set the VCREDIST environment variable.
EXIT /B 1
)
IF NOT EXIST "%QTDIR%" (
ECHO !QTDIR! does not exist.
ECHO Please install Qt and set the QTDIR environment variable.
EXIT /B 1
)
IF NOT EXIST "%QMAKE%" (
ECHO !QMAKE! does not exist.
ECHO Please install Qt and set the QTDIR environment variable.
EXIT /B 1
)
IF NOT EXIST "%PYTHON_HOME%" (
ECHO !PYTHON_HOME! does not exist.
ECHO Please install Python and set the PYTHON_HOME environment variable.
EXIT /B 1
)
IF NOT EXIST "%PYTHON_DLL%" (
ECHO !PYTHON_DLL! does not exist.
ECHO Please install Python and set the PYTHON_DLL environment variable.
EXIT /B 1
)
IF NOT EXIST "%PGDIR%" (
ECHO !PGDIR! does not exist.
ECHO Please install PostgreSQL and set the PGDIR environment variable.
EXIT /B 1
)
IF NOT EXIST "%PYTHON_HOME%\Scripts\virtualenv.exe" (
ECHO !PYTHON_HOME!\Scripts\virtualenv.exe does not exist.
ECHO Please install the virtualenv package in Python.
EXIT /B 1
)
SET "PATH=%PGDIR%\bin;%PATH%"
EXIT /B 0
:CREATE_VIRTUAL_ENV
ECHO Creating virtual environment...
IF NOT EXIST "%PGBUILDPATH%" MKDIR "%PGBUILDPATH%"
CD "%PGBUILDPATH%"
"%PYTHON_HOME%\Scripts\virtualenv.exe" "%VIRTUALENV%"
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\DLLs" "%PGBUILDPATH%\%VIRTUALENV%\DLLs" > nul || EXIT /B 1
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\Lib" "%PGBUILDPATH%\%VIRTUALENV%\Lib" > nul || EXIT /B 1
ECHO Activating virtual environment - %PGBUILDPATH%\%VIRTUALENV%...
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\activate" || EXIT /B 1
ECHO Installing dependencies...
CALL pip install -r "%WD%\requirements.txt" || EXIT /B 1
CALL pip install sphinx || EXIT /B 1
REM If we're using VC++, and this is Python 3.6+, we need to remove the hack
REM above or it will break qmake. Sigh.
IF "%MAKE%" == "nmake" (
IF %PYTHON_VERSION% GEQ 36 SET CL=
)
CD %WD%
EXIT /B 0
:CREATE_RUNTIME_ENV
MKDIR "%PGBUILDPATH%\runtime"
CD "%WD%\web"
ECHO Installing javascript dependencies...
CALL yarn install || EXIT /B 1
ECHO Bundling javascript...
CALL yarn run bundle || EXIT /B 1
ECHO Removing webpack caches...
RD /Q /S "%WD%\web\pgadmin\static\js\generated\.cache" 1> nul 2>&1
ECHO Copying web directory...
XCOPY /S /I /E /H /Y "%WD%\web" "%PGBUILDPATH%\web" > nul || EXIT /B 1
ECHO Cleaning up unnecessary .pyc and .pyo files...
FOR /R "%PGBUILDPATH%\web" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
ECHO Removing tests, Python caches and node modules...
FOR /R "%PGBUILDPATH%\web" %%f in (tests feature_tests __pycache__ node_modules) do RD /Q /S "%%f" 1> nul 2>&1
ECHO Removing the test framework...
RD /Q /S "%PGBUILDPATH%\web\regression" 1> nul 2>&1
ECHO Removing tools...
RD /Q /S "%PGBUILDPATH%\web\tools" 1> nul 2>&1
ECHO Removing any existing configurations...
DEL /q "%PGBUILDPATH%\web\pgadmin4.db" 1> nul 2>&1
DEL /q "%PGBUILDPATH%\web\config_local.py" 1> nul 2>&1
ECHO Creating config_distro.py
ECHO SERVER_MODE = False > "%PGBUILDPATH%\web\config_distro.py"
ECHO HELP_PATH = '../../../docs/en_US/html/' >> "%PGBUILDPATH%\web\config_distro.py"
ECHO DEFAULT_BINARY_PATHS = { >> "%PGBUILDPATH%\web\config_distro.py"
ECHO 'pg': '$DIR/../runtime', >> "%PGBUILDPATH%\web\config_distro.py"
ECHO 'ppas': '' >> "%PGBUILDPATH%\web\config_distro.py"
ECHO } >> "%PGBUILDPATH%\web\config_distro.py"
ECHO Building docs...
MKDIR "%PGBUILDPATH%\docs\en_US\html"
CD "%WD%\docs\en_US"
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\python.exe" build_code_snippet.py || EXIT /B 1
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\sphinx-build.exe" "%WD%\docs\en_US" "%PGBUILDPATH%\docs\en_US\html" || EXIT /B 1
ECHO Removing Sphinx
CALL pip uninstall -y sphinx Pygments alabaster colorama docutils imagesize requests snowballstemmer
ECHO Assembling runtime environment...
CD "%WD%\runtime"
ECHO Running qmake...
CALL "%QMAKE%" || EXIT /B 1
ECHO Cleaning the build directory...
CALL %MAKE% clean || EXIT /B 1
ECHO Running make...
CALL %MAKE% || EXIT /B 1
ECHO Staging pgAdmin4.exe...
COPY "%WD%\runtime\release\pgAdmin4.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
ECHO Staging Qt components...
COPY "%QTDIR%\bin\Qt5Core.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%QTDIR%\bin\Qt5Gui.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%QTDIR%\bin\Qt5Widgets.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%QTDIR%\bin\Qt5Network.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
IF EXIST "%QTDIR%\bin\libgcc_s_dw2-1.dll" COPY "%QTDIR%\bin\libgcc_s_dw2-1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
IF EXIST "%QTDIR%\bin\libstdc++-6.dll" COPY "%QTDIR%\bin\libstdc++-6.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
IF EXIST "%QTDIR%\bin\libwinpthread-1.dll" COPY "%QTDIR%\bin\libwinpthread-1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
MKDIR "%PGBUILDPATH%\runtime\platforms" > nul || EXIT /B 1
COPY "%QTDIR%\plugins\platforms\qwindows.dll" "%PGBUILDPATH%\runtime\platforms" > nul || EXIT /B 1
ECHO [Paths] > "%PGBUILDPATH%\runtime\qt.conf"
ECHO Plugins=plugins >> "%PGBUILDPATH%\runtime\qt.conf"
ECHO Staging PostgreSQL components...
COPY "%PGDIR%\bin\libpq.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%PGDIR%\bin\ssleay32.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%PGDIR%\bin\libeay32.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
IF EXIST "%PGDIR%\bin\libintl-*.dll" COPY "%PGDIR%\bin\libintl-*.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
IF EXIST "%PGDIR%\bin\libiconv-*.dll" COPY "%PGDIR%\bin\libiconv-*.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
IF EXIST "%PGDIR%\bin\zlib.dll" COPY "%PGDIR%\bin\zlib.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
IF EXIST "%PGDIR%\bin\zlib1.dll" COPY "%PGDIR%\bin\zlib1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%PGDIR%\bin\pg_dump.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%PGDIR%\bin\pg_dumpall.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1L%
COPY "%PGDIR%\bin\pg_restore.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY "%PGDIR%\bin\psql.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
ECHO Staging VC++ runtime...
MKDIR "%PGBUILDPATH%\installer" || EXIT /B 1
COPY "%VCREDIST%" "%PGBUILDPATH%\installer" > nul || EXIT /B 1
CD %WD%
EXIT /B 0
:CREATE_PYTHON_ENV
ECHO Staging Python...
COPY %PYTHON_DLL% "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY %PYTHON_HOME%\python.exe "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
COPY %PYTHON_HOME%\pythonw.exe "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
ECHO Cleaning up unnecessary .pyc and .pyo files...
FOR /R "%PGBUILDPATH%\%VIRTUALENV%" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
ECHO Removing tests...
FOR /R "%PGBUILDPATH%\%VIRTUALENV%\Lib" %%f in (test tests) do RD /Q /S "%%f" 1> nul 2>&1
ECHO Removing TCL...
RD /Q /S "%PGBUILDPATH%\%VIRTUALENV%\tcl" 1> nul 2>&1
EXIT /B 0
:CREATE_INSTALLER
ECHO Preparing for creation of windows installer...
IF NOT EXIST "%TARGET_DIR%" MKDIR "%TARGET_DIR%"
ECHO Copying icon file...
COPY "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%PGBUILDPATH%" > nul || EXIT /B 1
CD "%WD%\pkg\win32"
ECHO Processing installer configuration script...
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_NAME -r """%APP_NAME%"""
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_FULLVERSION -r """%APP_VERSION%"""
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss.in_stage3" "-s" MYAPP_VERSION -r """v%APP_MAJOR%"""
SET ARCMODE=
IF "%ARCHITECTURE%"=="amd64" (
set ARCMODE="x64"
)
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage3" "-o" "%WD%\pkg\win32\installer.iss.in_stage4" "-s" MYAPP_ARCHITECTURESMODE -r """%ARCMODE%"""
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage4" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%VCREDISTNAME%"""
ECHO Cleaning up...
DEL /s "%WD%\pkg\win32\installer.iss.in_stage*" > nul
ECHO Creating windows installer using INNO tool...
CALL "%INNOTOOL%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss" || EXIT /B 1
ECHO Renaming installer...
MOVE "%WD%\pkg\win32\Output\Setup.exe" "%TARGET_DIR%\%INSTALLERNAME%" > nul || EXIT /B 1
ECHO Location - %TARGET_DIR%\%INSTALLERNAME%
ECHO Installer generated successfully.
CD %WD%
EXIT /B 0
:SIGN_INSTALLER
ECHO Attempting to sign the installer...
CALL "%SIGNTOOL%" sign /t http://timestamp.verisign.com/scripts/timstamp.dll "%TARGET_DIR%\%INSTALLERNAME%"
IF %ERRORLEVEL% NEQ 0 (
ECHO.
ECHO ************************************************************
ECHO * Failed to sign the installer
ECHO ************************************************************
PAUSE
)
EXIT /B 0
:CLEANUP_ENV
ECHO Cleaning the build environment...
RD "%PGBUILDPATH%\%VIRTUALENV%\Include" /S /Q 1> nul 2>&1
DEL /s "%PGBUILDPATH%\%VIRTUALENV%\pip-selfcheck.json" 1> nul 2>&1
EXIT /B 0
:USAGE
ECHO Invalid command line options.
ECHO Usage: "Make.bat <x86 | clean>"
ECHO.
EXIT /B 1
+89 -19
View File
@@ -2,7 +2,7 @@
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# Copyright (C) 2013 - 2018, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
#########################################################################
@@ -14,36 +14,106 @@ SHELL = /bin/sh
#########################################################################
# Include only platform-independent builds in all
all: docs pip src
# Include all clean sub-targets in clean
clean: clean-dist clean-docs clean-pip clean-appbundle clean-src
pip: docs
./pkg/pip/build.sh
all: docs pip src runtime
appbundle: docs
./pkg/mac/build.sh
src:
./pkg/src/build.sh
install-node:
cd web && yarn install
docs:
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx html
bundle:
cd web && yarn run bundle
clean-pip:
rm -rf pip-build/
bundle-dev:
cd web && yarn run bundle:dev
linter:
cd web && yarn run linter
check: install-node bundle linter
cd web && pycodestyle --config=.pycodestyle . && yarn run karma start --single-run && python regression/runtests.py
check-pep8:
pycodestyle --config=.pycodestyle docs/
pycodestyle --config=.pycodestyle pkg/
pycodestyle --config=.pycodestyle web/
pycodestyle --config=.pycodestyle tools/
check-python:
cd web && python regression/runtests.py --exclude feature_tests
check-feature: install-node bundle
cd web && python regression/runtests.py --pkg feature_tests
check-js: install-node linter
cd web && yarn run karma start --single-run
runtime-debug:
cd runtime && qmake CONFIG+=debug && make
runtime:
cd runtime && qmake CONFIG+=release && make
# Include all clean sub-targets in clean
clean: clean-appbundle clean-docker clean-dist clean-docs clean-node clean-pip clean-src clean-runtime
rm -rf web/pgadmin/static/js/generated/*
rm -rf web/pgadmin/static/js/generated/.cache
rm -rf web/pgadmin/static/css/generated/*
rm -rf web/pgadmin/static/css/generated/.cache
clean-runtime:
if [ -f runtime/Makefile ]; then (cd runtime && make clean); fi;
rm -rf build-*
clean-appbundle:
rm -rf mac-build/
clean-src:
rm -rf src-build/
clean-docs:
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx clean
clean-docker:
rm -rf docker-build/
clean-dist:
rm -rf dist/
clean-docs:
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx clean
clean-node:
rm -rf web/node-modules/
clean-pip:
rm -rf pip-build/
clean-src:
rm -rf src-build/
docker:
./pkg/docker/build.sh
docs:
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx html
docs-pdf:
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx latexpdf
docs-epub:
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx epub
messages: msg-extract msg-update msg-compile
msg-compile:
cd web && pybabel compile --statistics -d pgadmin/translations
msg-extract:
cd web && pybabel extract -F babel.cfg -o pgadmin/messages.pot pgadmin
msg-update:
cd web && pybabel update -i pgadmin/messages.pot -d pgadmin/translations
.PHONY: docs
pip: docs
./pkg/pip/build.sh
src:
./pkg/src/build.sh
+286 -21
View File
@@ -4,35 +4,41 @@ pgAdmin 4
pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the
PostgreSQL (http://www.postgresql.org) database.
In the following documentation and examples, "$PGADMIN4_SRC/" is used to denote
the top-level directory of a copy of the pgAdmin source tree, either from a
tarball or a git checkout.
Architecture
------------
pgAdmin 4 is being written as a web application in Python, using jQuery and
Bootstrap for the client side processing and UI. On the server side, Flask is
being utilised.
pgAdmin 4 is written as a web application in Python, using jQuery and Bootstrap
for the client side processing and UI. On the server side, Flask is being
utilised.
Although developed using web technologies, we intend for pgAdmin 4 to be usable
either on a web server using a browser, or standalone on a workstation. The
runtime/ subdirectory contains a QT based runtime application intended to allow
this - it is essentially a browser and Python interpretor in one package which
will be capable of hosting the Python application and presenting it to the user
as a desktop application.
Although developed using web technologies, pgAdmin 4 can be deployed either on
a web server using a browser, or standalone on a workstation. The runtime/
subdirectory contains a QT based runtime application intended to allow this -
it is essentially a Python application server that runs in the system tray
and allows the user to connect to the application using their web browser.
Building
--------
Building the Runtime
--------------------
To build the runtime, the following packages must be installed:
- QT 4.6 or above (older versions may work, but haven't been tested).
- Python 2.6 or above.
- QT 4.6 or above (Use the VC++ build on Windows, not MinGW).
- Python 2.7 or 3.4+
Assuming both qmake and python-config are in the path:
$ cd $PGADMIN4_SRC/runtime
$ qmake
Project MESSAGE: Building for QT5+...
$ make
...
$ cd $PGADMIN4_SRC/runtime
$ qmake
Project MESSAGE: Building for QT5+...
Project MESSAGE: Building for Linux/Mac...
Project MESSAGE: Using /usr/bin/python-config
Project MESSAGE: Python2 detected.
$ make
...
To build the runtime in debug mode, use the option below with qmake
$ qmake CONFIG+=debug
@@ -48,14 +54,273 @@ app bundle called pgAdmin4.app will be created.
To build the runtime on a Windows system, export PYTHON_HOME and PYTHON_VERSION
variables in the System environment. Specify the PYTHON_VERSION with the major
and minor number. Do not specify micro level version.
For example, given a Python version of A.B.C; A - Major number, B - Minor number,
C - Micro level (Bug fix releases).
If Python version is 2.7.2 than specify PYTHON_VERSION=27
For example, given a Python version of A.B.C; A - Major number, B - Minor
number, C - Micro level (Bug fix releases).
If Python version is 2.7.12 than specify PYTHON_VERSION=27
e.g. PYTHON_HOME=C:\Python27\
PYTHON_VERSION=27
You can also use Qt Creator to build, develop and debug the runtime. Simply
open the $PGADMIN4_SRC/runtime/pgAdmin4.pro project file in Qt Creator and
configure the project with a supported version of Qt when prompted.
Create Database Migrations
--------------------------
In order to make changes to the SQLite DB, navigate to the 'web' directory:
(pgadmin4) $ cd $PGADMIN4_SRC/web
Create a migration file with the following command:
(pgadmin4) $ FLASK_APP=pgAdmin4.py flask db revision
This will create a file in: $PGADMIN4_SRC/web/migrations/versions/ .
Add any changes to the 'upgrade' function.
Increment the SCHEMA_VERSION in $PGADMIN4_SRC/web/pgadmin/model/__init__.py file.
There is no need to increment the SETTINGS_SCHEMA_VERSION.
Configuring the Python Environment
----------------------------------
In order to run the Python code, a suitable runtime environment is required.
Python versions - Python 2.7 or 3.4+ are currently supported. It is
recommended that a Python Virtual Environment is setup for this purpose,
rather than using the system Python environment. On Linux and Mac systems, the
process is fairly simple - adapt as required for your distribution:
1) Install the virtualenv packages into the system Python environment
$ sudo pip install virtualenv virtualenvwrapper
2) Source the virtualenv wrapper tools script. You may want to add this command
to your ~/.bash_profile file for future convenience:
$ source /usr/local/bin/virtualenvwrapper.sh
3) Create a virtual environment:
$ mkvirtualenv pgadmin4
To make use of the virtual environment in the future, use the following
command to re-activate it:
$ workon pgadmin4
4) Ensure that a PostgreSQL installation's bin/ directory is in the path (so
pg_config can be found for building psycopg2), and install the required
packages:
(pgadmin4) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
If you are planning to run the regression tests, you also need to install
additional requirements from web/regression/requirements.txt:
(pgadmin4) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
5) Create a local configuration file for pgAdmin. Edit
$PGADMIN4_SRC/web/config_local.py and add any desired configuration options
(use the config.py file as a reference - any settings duplicated in
config_local.py will override those in config.py). A typical development
configuration may look like:
from config import *
# Debug mode
DEBUG = True
# App mode
SERVER_MODE = True
# Enable the test module
MODULE_BLACKLIST.remove('test')
# Log
CONSOLE_LOG_LEVEL = DEBUG
FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = True
# Use a different config DB for each server mode.
if SERVER_MODE == False:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-desktop.db'
)
else:
SQLITE_PATH = os.path.join(
DATA_DIR,
'pgadmin4-server.db'
)
This configuration allows easy switching between server and desktop modes
for testing.
6) The initial setup of the configuration database is interactive in server
mode, and non-interactive in desktop mode. You can run it either by
running:
(pgadmin4) $ python $PGADMIN4_SRC/web/setup.py
or by starting pgAdmin 4:
(pgadmin4) $ python $PGADMIN4_SRC/web/pgAdmin4.py
Whilst it is possible to automatically run setup in desktop mode by running
the runtime, that will not work in server mode as the runtime doesn't allow
command line interaction with the setup program.
At this point you will be able to run pgAdmin 4 from the command line in either
server or desktop mode, and access it from a web browser using the URL shown in
the terminal once pgAdmin has started up.
Setup of an environment on Windows is somewhat more complicated unfortunately,
largely due to the lack of a native compiler toolset. Thankfully, Microsoft
supply a free compiler specifically for Python 2.7 users. Download and install
it from:
https://www.microsoft.com/en-gb/download/details.aspx?id=44266
A blog detailing the setup of Virtual Environments on Windows can be found
here:
http://www.tylerbutler.com/2012/05/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/
Once a virtual environment has been created and enabled, setup can continue
from step 4 above.
Building the Web Assets
-----------------------
pgAdmin is dependent on a number of third party Javascript libraries. These,
along with it's own Javascript code, SCSS/CSS code and images must be
compiled into a "bundle" which is transferred to the browser for execution
and rendering. This is far more efficient than simply requesting each
asset as it's needed by the client.
To create the bundle, you will need the 'yarn' package management tool to be
installed. Then, you can run the following commands on a *nix system to
download the required packages and build the bundle:
(pgadmin4) $ cd $PGADMIN4_SRC
(pgadmin4) $ make install-node
(pgadmin4) $ make bundle
On Windows systems (where "make" is not available, the following commands
can be used:
C:\> cd $PGADMIN4_SRC\web
C:\$PGADMIN4_SRC\web> yarn install
C:\$PGADMIN4_SRC\web> yarn run bundle
Configuring the Runtime
-----------------------
The pgAdmin 4 Runtime maintains it's own Python Path to avoid conflicts with
packages or other issues in the system Python installation. It will also search
a number of known locations for the pgAdmin4.py file needed to run pgAdmin
(including relative locations in a source code tree), however you can specify
an alternate path if needed.
If either a working environment or pgAdmin4.py cannot be found at startup, the
runtime will prompt for the locations. Alternatively, you can click the try
icon and select the Configuration option to open the configuration dialogue.
On a Linux/Mac system, the Python Path will typically consist of a single path
to the virtual environment's site-packages directory, e.g.
/Users/<USERNAME>/.virtualenvs/pgadmin4/lib/python2.7/site-packages
On Windows, multiple paths are likely to be required, e.g.
C:\Users\dpage\.virtualenvs\pgadmin4\Lib\site-packages;C:\Users\dpage\.virtualenvs\pgadmin4\Lib;C:\Users\dpage\.virtualenvs\pgadmin4\Lib\lib-tk;C:\Users\dpage\.virtualenvs\pgadmin4\DLLs
If you wish to specify a specific copy of the Python code to run, you can set
the Application Path to a directory containing pgAdmin4.py, e.g.
/Users/<USERNAME>/git/pgadmin4-test/web/
Building the documentation
--------------------------
In order to build the docs, an additional Python package is required in the
virtual environment. This can be installed with the pip package manager:
$ workon pgadmin4
(pgadmin4) $ pip install Sphinx
The docs can then be built using the Makefile in $PGADMIN4_SRC, e.g.
(pgadmin4) $ make docs
The output can be found in $PGADMIN4_SRC/docs/en_US/_build/html/index.html
Building packages
-----------------
Most packages can be built using the Makefile in $PGADMIN4_SRC, provided all
the setup and configuration above has been completed.
To build a source tarball:
(pgadmin4) $ make src
To build a PIP Wheel, activate either a Python 2 or Python 3 virtual
environment as desired, configured with all the required packages, and then
run:
(pgadmin4) $ make pip
On a Mac, build an application bundle in a disk image (DMG file) with:
(pgadmin4) $ make appbundle
Configure the framework.conf to match the QT and Python versions the app is
being built with:
$ cp $PGADMIN4_SRC/pkg/mac/framework.conf.in $PGADMIN4_SRC/pkg/mac/framework.conf
$ vi $PGADMIN4_SRC/pkg/mac/framework.conf
If you have an Apple code signing certificate, both the app bundle and disk
image can be automatically signed by configuring signing:
$ cp $PGADMIN4_SRC/pkg/mac/codesign.conf.in $PGADMIN4_SRC/pkg/mac/codesign.conf
$ vi $PGADMIN4_SRC/pkg/mac/codesign.conf
Edit the file as appropriate, ensuring the various version numbers are correct
and that the appropriate developer ID is specified.
On Windows, the InnoSetup tool is required to create an installer. Download the
Unicode version from:
http://www.jrsoftware.org/isdl.php
A number of environment variables may need to be set to enable the build script
to function. The defaults will usually work on a typical 64 bit system with
Qt 5.5.1, Python 2.7 and Visual Studio 2013. The examples below are for a
similar 32 bit system:
INNOTOOL=C:\Program Files\Inno Setup 5
PGDIR=C:\Program Files\PostgreSQL\10
PYTHON_DLL=C:\Windows\System32\Python27.dll
PYTHON_HOME=C:\Python27
PYTHON_VERSION=27
QTDIR=C:\Qt\5.9\msvc2013
VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC
To build the installer:
C:\$PGADMIN4_SRC> make x86
If you have a code signing certificate, this will automatically be used if
found in the Windows Certificate Store to sign the installer.
Support
-------
+3 -2
View File
@@ -2,8 +2,9 @@
#
# You can set these variables from the command line.
PYTHON = python
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SPHINXBUILD = sphinx-build -W
PAPER =
BUILDDIR = _build
@@ -18,7 +19,7 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# development environment).
code_snippet:
@echo "Generating code-snippet.rst for some of the important classes..."
-@python build_code_snippet.py
-@$(PYTHON) build_code_snippet.py
help:
@echo "Please use \`make <target>' where <target> is one of"
+15 -7
View File
@@ -1,17 +1,25 @@
.. _add_restore_point_dialog:
**********************************
The Add named restore point Dialog
**********************************
***************************************
`Add Named Restore Point Dialog`:index:
***************************************
Use the *Add named restore point* dialog to take a named snapshot of the state of the server for use in a recovery file. To create a named restore point, the server's postgresql.conf file must specify a *wal_level* value of *archive*, *hot_standby*, or *logical*. You must be a database superuser to create a restore point.
Use the *Add named restore point* dialog to take a named snapshot of the state
of the server for use in a recovery file. To create a named restore point, the
server's postgresql.conf file must specify a *wal_level* value of *archive*,
*hot_standby*, or *logical*. You must be a database superuser to create a
restore point.
.. image:: images/add_restore_point.png
:alt: Restore point dialog
:align: center
When the *Restore point name* window launches, use the field *Enter the name of the restore point to add* to provide a descriptive name for the restore point.
When the *Restore point name* window launches, use the field *Enter the name of
the restore point to add* to provide a descriptive name for the restore point.
For more information about using a restore point as a recovery target, please see the `PostgreSQL
documentation <http://www.postgresql.org/docs/9.5/static/recovery-target-settings.html#RECOVERY-TARGET-NAME>`_.
For more information about using a restore point as a recovery target, please
see the
`PostgreSQL documentation <https://www.postgresql.org/docs/current/recovery-target-settings.html#RECOVERY-TARGET-NAME>`_.
* Click the *OK* button to save the restore point.
* Click the *Cancel* button to exit without saving work.
+6 -6
View File
@@ -1,12 +1,12 @@
.. _backup_and_restore:
******************
Backup and Restore
******************
***************************
`Backup and Restore`:index:
***************************
A powerful, but user-friendly Backup and Restore tool provides an easy way to use pg_dump, pg_dumpall, and pg_restore to take backups and create copies of databases or database objects for use in a development environment.
Contents:
A powerful, but user-friendly Backup and Restore tool provides an easy way to
use pg_dump, pg_dumpall, and pg_restore to take backups and create copies of
databases or database objects for use in a development environment.
.. toctree::
+167 -57
View File
@@ -1,108 +1,218 @@
.. _backup_dialog:
*****************
The Backup Dialog
*****************
**********************
`Backup Dialog`:index:
**********************
Using the *pg_dump* utility, *pgAdmin* provides an easy way to create a backup in a plain-text or archived format. You can then use a client application (like *psql* or the *Query Tool*) to restore a plain-text backup file, or use the Postgres *pg_restore* utility to restore an archived backup. The *pg_dump* utility must have read access to all database objects that you want to back up.
Using the *pg_dump* utility, *pgAdmin* provides an easy way to create a backup
in a plain-text or archived format. You can then use a client application (like
*psql* or the *Query Tool*) to restore a plain-text backup file, or use the
Postgres *pg_restore* utility to restore an archived backup. The *pg_dump*
utility must have read access to all database objects that you want to back up.
You can backup a single table, a schema, or a complete database. Select the name of the backup source in the *pgAdmin* tree control, right click to open the context menu, and select *Backup...* to open the *Backup* dialog. The name of the object selected will appear in the dialog title bar.
You can backup a single table, a schema, or a complete database. Select the name
of the backup source in the *pgAdmin* tree control, right click to open the
context menu, and select *Backup...* to open the *Backup* dialog. The name of
the object selected will appear in the dialog title bar.
.. image:: images/backup_general.png
:alt: Backup dialog general tab
:align: center
Use the fields in the *General* tab to specify parameters for the backup:
* Enter the name of the backup file in the *Filename* field. Optionally, select the *Browser* icon (...) to the right to navigate into a directory and select a file that will contain the archive.
* Use the drop-down listbox in the *Format* field to select the format that is best suited for your application. Each format has advantages and disadvantages:
* Enter the name of the backup file in the *Filename* field. Optionally, select
the *Browser* icon (...) to the right to navigate into a directory and select
a file that will contain the archive.
* Select *Custom* to create a custom archive file that you can use with *pg_restore* to create a copy of a database. Custom archive file formats must be restored with *pg_restore*. This format offers the opportunity to select which database objects to restore from the backup file. *Custom* archive format is recommended for medium to large databases as it is compressed by default.
* Use the drop-down listbox in the *Format* field to select the format that is
best suited for your application. Each format has advantages and
disadvantages:
* Select *Tar* to generate a tar archive file that you can restore with *pg_restore*. The tar format does not support compression.
* Select *Plain* to create a plain-text script file. A plain-text script file contains SQL statements and commands that you can execute at the *psql* command line to recreate the database objects and load the table data. A plain-text backup file can be edited in a text editor, if desired, before using the *psql* program to restore database objects. *Plain* format is normally recommended for smaller databases; script dumps are not recommended for blobs. The SQL commands within the script will reconstruct the database to the last saved state of the database. A plain-text script can be used to reconstruct the database on another machine, or (with modifications) on other architectures.
* Select *Directory* to generate a directory-format archive suitable for use with *pg_restore*. This file format creates a directory with one file for each table and blob being dumped, plus a *Table of Contents* file describing the dumped objects in a machine-readable format that *pg_restore* can read. This format is compressed by default.
* Select *Custom* to create a custom archive file that you can use with
*pg_restore* to create a copy of a database. Custom archive file formats
must be restored with *pg_restore*. This format offers the opportunity to
select which database objects to restore from the backup file. *Custom*
archive format is recommended for medium to large databases as it is
compressed by default.
* Use the *Compression Ratio* field to select a compression level for the backup. Specify a value of zero to mean use no compression; specify a maximum compression value of 9. Please note that tar archives do not support compression.
* Use the *Encoding* drop-down listbox to select the character encoding method that should be used for the archive.
* Use the *Number of Jobs* field (when applicable) to specify the number of tables that will be dumped simultaneously in a parallel backup.
* Use the dropdown listbox next to *Rolename* to specify the role that owns the backup.
* Select *Tar* to generate a tar archive file that you can restore with
*pg_restore*. The tar format does not support compression.
Click the *Dump options* tab to continue. Use the box fields in the *Dump options* tab to provide options for *pg_dump*.
* Select *Plain* to create a plain-text script file. A plain-text script file
contains SQL statements and commands that you can execute at the *psql*
command line to recreate the database objects and load the table data. A
plain-text backup file can be edited in a text editor, if desired, before
using the *psql* program to restore database objects. *Plain* format is
normally recommended for smaller databases; script dumps are not
recommended for blobs. The SQL commands within the script will reconstruct
the database to the last saved state of the database. A plain-text script
can be used to reconstruct the database on another machine, or (with
modifications) on other architectures.
* Select *Directory* to generate a directory-format archive suitable for use
with *pg_restore*. This file format creates a directory with one file for
each table and blob being dumped, plus a *Table of Contents* file
describing the dumped objects in a machine-readable format that
*pg_restore* can read. This format is compressed by default.
* Use the *Compression Ratio* field to select a compression level for the
backup. Specify a value of zero to mean use no compression; specify a maximum
compression value of 9. Please note that tar archives do not support
compression.
* Use the *Encoding* drop-down listbox to select the character encoding method
that should be used for the archive.
* Use the *Number of Jobs* field (when applicable) to specify the number of
tables that will be dumped simultaneously in a parallel backup.
* Use the dropdown listbox next to *Rolename* to specify the role that owns the
backup.
Click the *Dump options* tab to continue. Use the box fields in the *Dump
options* tab to provide options for *pg_dump*.
.. image:: images/backup_sections.png
:alt: Sections option on backup dialog
:align: center
* Move switches in the **Sections** field box to select a portion of the object that will be backed up.
* Move switches in the **Sections** field box to select a portion of the object
that will be backed up.
* Move the switch next to *Pre-data* to the *Yes* position to include all data definition items not included in the data or post-data item lists.
* Move the switch next to *Data* to the *Yes* position to backup actual table data, large-object contents, and sequence values.
* Move the switch next to *Post-data* to the *Yes* position to include definitions of indexes, triggers, rules, and constraints other than validated check constraints.
.. image:: images/backup_objects.png
* Move the switch next to *Pre-data* to the *Yes* position to include all
data definition items not included in the data or post-data item lists.
* Move switches in the **Type of objects** field box to specify details about the type of objects that will be backed up.
* Move the switch next to *Data* to the *Yes* position to backup actual table
data, large-object contents, and sequence values.
* Move the switch next to *Only data* to the *Yes* position to limit the back up to data.
* Move the switch next to *Only schema* to limit the back up to schema-level database objects.
* Move the switch next to *Blobs* to the *No* position to exclude large objects in the backup.
* Move the switch next to *Post-data* to the *Yes* position to include
definitions of indexes, triggers, rules, and constraints other than
validated check constraints.
.. image:: images/backup_objects.png
:alt: Type of objects option on backup dialog
:align: center
* Move switches in the **Type of objects** field box to specify details about
the type of objects that will be backed up.
* Move the switch next to *Only data* to the *Yes* position to limit the back
up to data.
* Move the switch next to *Only schema* to limit the back up to schema-level
database objects.
* Move the switch next to *Blobs* to the *No* position to exclude large
objects in the backup.
.. image:: images/backup_do_not_save.png
:alt: Do not save option on backup dialog
:align: center
* Move switches in the **Do not save** field box to select the objects that will not be included in the backup.
* Move switches in the **Do not save** field box to select the objects that will
not be included in the backup.
* Move the switch next to *Owner* to the *Yes* position to include commands that set object ownership.
* Move the switch next to *Owner* to the *Yes* position to exclude commands
that set object ownership.
* Move the switch next to *Privilege* to the *Yes* position to include commands that create access privileges.
* Move the switch next to *Privilege* to the *Yes* position to exclude
commands that create access privileges.
* Move the switch next to *Tablespace* to the *Yes* position to include tablespaces.
* Move the switch next to *Tablespace* to the *Yes* position to exclude
tablespaces.
* Move the switch next to *Unlogged table data* to the *Yes* position to include the contents of unlogged tables.
* Move the switch next to *Unlogged table data* to the *Yes* position to
exclude the contents of unlogged tables.
* Move the switch next to *Comments* to the *Yes* position to exclude
commands that set the comments. **Note:** This option is visible only for
database server greater than or equal to 11.
.. image:: images/backup_queries.png
:alt: Queries option on backup dialog
:align: center
* Move switches in the **Queries** field box to specify the type of statements that should be included in the backup.
* Move switches in the **Queries** field box to specify the type of statements
that should be included in the backup.
* Move the switch next to *Use Column Inserts* to the *Yes* position to dump the data in the form of INSERT statements and include explicit column names. Please note: this may make restoration from backup slow.
* Move the switch next to *Use Column Inserts* to the *Yes* position to dump
the data in the form of INSERT statements and include explicit column
names. Please note: this may make restoration from backup slow.
* Move the switch next to *Use Insert commands* to the *Yes* position to dump the data in the form of INSERT statements rather than using a COPY command. Please note: this may make restoration from backup slow.
* Move the switch next to *Use Insert commands* to the *Yes* position to
dump the data in the form of INSERT statements rather than using a COPY
command. Please note: this may make restoration from backup slow.
* Move the switch next to *Include CREATE DATABASE statement* to the *Yes* position to include a command in the backup that creates a new database when restoring the backup.
* Move the switch next to *Include CREATE DATABASE statement* to the *Yes*
position to include a command in the backup that creates a new database
when restoring the backup.
* Move the switch next to *Include DROP DATABASE statement* to the *Yes* position to include a command in the backup that will drop any existing database object with the same name before recreating the object during a backup.
* Move the switch next to *Include DROP DATABASE statement* to the *Yes*
position to include a command in the backup that will drop any existing
database object with the same name before recreating the object during a
backup.
* Move the switch next to *Load Via Partition Root* to the *Yes* position,
so when dumping a COPY or INSERT statement for a partitioned table, target
the root of the partitioning hierarchy which contains it rather than the
partition itself. **Note:** This option is visible only for database server
greater than or equal to 11.
.. image:: images/backup_disable.png
:alt: Disable option on backup dialog
:align: center
* Move switches in the **Disable** field box to specify the type of statements that should be excluded from the backup.
* Move switches in the **Disable** field box to specify the type of statements
that should be excluded from the backup.
* Move the switch next to *Trigger* (active when creating a data-only backup) to the *Yes* position to include commands that will disable triggers on the target table while the data is being loaded.
* Move the switch next to *Trigger* (active when creating a data-only backup)
to the *Yes* position to include commands that will disable triggers on the
target table while the data is being loaded.
* Move the switch next to *$ quoting* to the *Yes* position to enable dollar
quoting within function bodies; if disabled, the function body will be
quoted using SQL standard string syntax.
* Move the switch next to *$ quoting* to the *Yes* position to enable dollar quoting within function bodies; if disabled, the function body will be quoted using SQL standard string syntax.
.. image:: images/backup_miscellaneous.png
:alt: Miscellaneous option on backup dialog
:align: center
* Move switches in the **Miscellaneous** field box to specify miscellaneous backup options.
* Move switches in the **Miscellaneous** field box to specify miscellaneous
backup options.
* Move the switch next to *With OIDs* to the *Yes* position to include object identifiers as part of the table data for each table.
* Move the switch next to *With OIDs* to the *Yes* position to include object
identifiers as part of the table data for each table.
* Move the switch next to *Verbose messages* to the *No* position to instruct *pg_dump* to exclude verbose messages.
* Move the switch next to *Verbose messages* to the *No* position to instruct
*pg_dump* to exclude verbose messages.
* Move the switch next to *Force double quotes on identifiers* to the *Yes* position to force the quoting of all identifiers.
* Move the switch next to *Force double quotes on identifiers* to the *Yes*
position to force the quoting of all identifiers.
* Move the switch next to *Use SET SESSION AUTHORIZATION* to the *Yes* position to include a statement that will use a SET SESSION AUTHORIZATION command to determine object ownership (instead of an ALTER OWNER command).
* Move the switch next to *Use SET SESSION AUTHORIZATION* to the *Yes*
position to include a statement that will use a SET SESSION AUTHORIZATION
command to determine object ownership (instead of an ALTER OWNER command).
When you’ve specified the details that will be incorporated into the pg_dump command:
When you’ve specified the details that will be incorporated into the pg_dump
command:
* Click the *Backup* button to build and execute a command that builds a backup
based on your selections on the *Backup* dialog.
* Click the *Backup* button to build and execute a command that builds a backup based on your selections on the *Backup* dialog.
* Click the *Cancel* button to exit without saving work.
.. image:: images/backup_messages.png
.. image:: images/backup_messages.png
:alt: Backup success notification popup
:align: center
If the backup is successful, a popup window will confirm success. Click *Click here for details* on the popup window to launch the *Process Watcher*. The *Process Watcher* logs all the activity associated with the backup and provides additional information for troubleshooting.
Use the **Stop Process** button to stop the Backup process.
If the backup is successful, a popup window will confirm success. Click *Click
here for details* on the popup window to launch the *Process Watcher*. The
*Process Watcher* logs all the activity associated with the backup and provides
additional information for troubleshooting.
.. image:: images/backup_process_watcher.png
If the backup is unsuccessful, you can review the error messages returned by the backup command on the *Process Watcher*.
:alt: Backup process watcher
:align: center
If the backup is unsuccessful, you can review the error messages returned by the
backup command on the *Process Watcher*.
+38 -14
View File
@@ -1,29 +1,53 @@
.. _backup_globals_dialog:
*************************
The Backup Globals Dialog
*************************
******************************
`Backup Globals Dialog`:index:
******************************
Use the *Backup Globals* dialog to create a plain-text script that recreates all of the database objects within a cluster, and the global objects that are shared by those databases. Global objects include tablespaces, roles, and object properties. You can use the pgAdmin *Query Tool* to play back a plain-text script, and recreate the objects in the backup.
Use the *Backup Globals* dialog to create a plain-text script that recreates all
of the database objects within a cluster, and the global objects that are shared
by those databases. Global objects include tablespaces, roles, and object
properties. You can use the pgAdmin *Query Tool* to play back a plain-text
script, and recreate the objects in the backup.
.. image:: images/backup_globals_general.png
:alt: Backup globals dialog
:align: center
Use the fields in the *General* tab to specify the following:
* Enter the name of the backup file in the *Filename* field. Optionally, select the *Browser* icon (ellipsis) to the right to navigate into a directory and select a file that will contain the archive.
* Use the drop-down listbox next to *Role name* to specify a role with connection privileges on the selected server. The role will be used for authentication during the backup.
* Enter the name of the backup file in the *Filename* field. Optionally, select
the *Browser* icon (ellipsis) to the right to navigate into a directory and
select a file that will contain the archive.
* Use the drop-down listbox next to *Role name* to specify a role with
connection privileges on the selected server. The role will be used for
authentication during the backup.
Move switches in the **Miscellaneous** field box to specify the type of statements that should be included in the backup.
* Move the *Verbose messages* switch to the *No* position to exclude status messages from the backup. The default is *Yes*.
* Move the *Force double quote on identifiers* switch to the *Yes* position to name identifiers without changing case. The default is *No*.
Move switches in the **Miscellaneous** field box to specify the type of
statements that should be included in the backup.
Click the *Backup* button to build and execute a command based on your selections; click the *Cancel* button to exit without saving work.
* Move the *Verbose messages* switch to the *No* position to exclude status
messages from the backup. The default is *Yes*.
* Move the *Force double quote on identifiers* switch to the *Yes* position to
name identifiers without changing case. The default is *No*.
Click the *Backup* button to build and execute a command based on your
selections; click the *Cancel* button to exit without saving work.
.. image:: images/backup_globals_messages.png
:alt: Backup globals success notification popup
:align: center
If the backup is successful, a popup window will confirm success. Click *Click here for details* on the popup window to launch the *Process Watcher*. The *Process Watcher* logs all the activity associated with the backup and provides additional information for troubleshooting.
Use the **Stop Process** button to stop the Backup process.
If the backup is successful, a popup window will confirm success. Click *Click
here for details* on the popup window to launch the *Process Watcher*. The
*Process Watcher* logs all the activity associated with the backup and provides
additional information for troubleshooting.
.. image:: images/backup_globals_process_watcher.png
If the backup is unsuccessful, review the error message returned by the *Process Watcher* to resolve any issue.
:alt: Backup globals process watcher
:align: center
If the backup is unsuccessful, review the error message returned by the
*Process Watcher* to resolve any issue.
+123 -14
View File
@@ -1,29 +1,138 @@
.. _backup_server_dialog:
*************************
The Backup Server Dialog
*************************
*****************************
`Backup Server Dialog`:index:
*****************************
Use the *Backup Server* dialog to create a plain-text script that will recreate the selected server. You can use the pgAdmin *Query Tool* to play back a plain-text script, and recreate the server.
Use the *Backup Server* dialog to create a plain-text script that will recreate
the selected server. You can use the pgAdmin *Query Tool* to play back a
plain-text script, and recreate the server.
.. image:: images/backup_server_general.png
:alt: Backup server dialog
:align: center
Use the fields in the *General* tab to specify the following:
* Enter the name of the backup file in the *Filename* field. Optionally, select the *Browser* icon (ellipsis) to the right to navigate into a directory and select a file that will contain the archive.
* Use the drop-down listbox next to *Role name* to specify a role with connection privileges on the selected server. The role will be used for authentication during the backup.
* Enter the name of the backup file in the *Filename* field. Optionally, select
the *Browser* icon (ellipsis) to the right to navigate into a directory and
select a file that will contain the archive.
* Use the *Encoding* drop-down listbox to select the character encoding method
that should be used for the archive. **Note:** This option is visible only for
database server greater than or equal to 11.
* Use the drop-down listbox next to *Role name* to specify a role with
connection privileges on the selected server. The role will be used for
authentication during the backup.
Move switches in the *Miscellaneous* box to specify the type of statements that should be included in the backup.
* Move the *Verbose messages* switch to the *No* position to exclude status messages from the backup. The default is *Yes*.
* Move the *Force double quote on identifiers* switch to the *Yes* position to name identifiers without changing case. The default is *No*.
.. image:: images/backup_server_objects.png
:alt: Type of objects option on backup server dialog
:align: center
Click the *Backup* button to build and execute a command based on your selections; click the *Cancel* button to exit without saving work.
* Move switches in the **Type of objects** field box to specify details about
the type of objects that will be backed up.
* Move the switch next to *Only data* to the *Yes* position to limit the back
up to data.
* Move the switch next to *Only schema* to limit the back up to schema-level
database objects.
.. image:: images/backup_server_do_not_save.png
:alt: Do not save option on backup server dialog
:align: center
* Move switches in the **Do not save** field box to select the objects that will
not be included in the backup.
* Move the switch next to *Owner* to the *Yes* position to exclude commands
that set object ownership.
* Move the switch next to *Privilege* to the *Yes* position to exclude
commands that create access privileges.
* Move the switch next to *Tablespace* to the *Yes* position to exclude
tablespaces.
* Move the switch next to *Unlogged table data* to the *Yes* position to
exclude the contents of unlogged tables.
* Move the switch next to *Comments* to the *Yes* position to exclude
commands that set the comments. **Note:** This option is visible only for
database server greater than or equal to 11.
.. image:: images/backup_server_queries.png
:alt: Queries option on backup server dialog
:align: center
* Move switches in the **Queries** field box to specify the type of statements
that should be included in the backup.
* Move the switch next to *Use Column Inserts* to the *Yes* position to dump
the data in the form of INSERT statements and include explicit column
names. Please note: this may make restoration from backup slow.
* Move the switch next to *Use Insert commands* to the *Yes* position to dump
the data in the form of INSERT statements rather than using a COPY command.
Please note: this may make restoration from backup slow.
* Move the switch next to *Include DROP DATABASE statement* to the *Yes*
position to include a command in the backup that will drop any existing
database object with the same name before recreating the object during a
backup.
.. image:: images/backup_server_disable.png
:alt: Disable option on backup server dialog
:align: center
* Move switches in the **Disable** field box to specify the type of statements
that should be excluded from the backup.
* Move the switch next to *Trigger* (active when creating a data-only backup)
to the *Yes* position to include commands that will disable triggers on the
target table while the data is being loaded.
* Move the switch next to *$ quoting* to the *Yes* position to enable dollar
quoting within function bodies; if disabled, the function body will be
quoted using SQL standard string syntax.
.. image:: images/backup_server_miscellaneous.png
:alt: Miscellaneous option on backup server dialog
:align: center
* Move switches in the **Miscellaneous** field box to specify miscellaneous
backup options.
* Move the switch next to *With OIDs* to the *Yes* position to include object
identifiers as part of the table data for each table.
* Move the switch next to *Verbose messages* to the *No* position to instruct
*pg_dump* to exclude verbose messages.
* Move the switch next to *Force double quotes on identifiers* to the *Yes*
position to force the quoting of all identifiers.
* Move the switch next to *Use SET SESSION AUTHORIZATION* to the *Yes*
position to include a statement that will use a SET SESSION AUTHORIZATION
command to determine object ownership (instead of an ALTER OWNER command).
Click the *Backup* button to build and execute a command based on your
selections; click the *Cancel* button to exit without saving work.
.. image:: images/backup_server_messages.png
:alt: Backup server success notification popup
:align: center
If the backup is successful, a popup window will confirm success. Click *Click here for details* on the popup window to launch the *Process Watcher*. The *Process Watcher* logs all the activity associated with the backup and provides additional information for troubleshooting.
Use the **Stop Process** button to stop the Backup process.
If the backup is successful, a popup window will confirm success. Click *Click
here for details* on the popup window to launch the *Process Watcher*. The
*Process Watcher* logs all the activity associated with the backup and provides
additional information for troubleshooting.
.. image:: images/backup_server_process_watcher.png
If the backup is unsuccessful, review the error message returned by the *Process Watcher* to resolve any issue.
:alt: Backup server process watcher
:align: center
If the backup is unsuccessful, review the error message returned by the
*Process Watcher* to resolve any issue.
-39
View File
@@ -1,39 +0,0 @@
.. _browser:
********************
The pgAdmin 4 Client
********************
pgAdmin 4 supports all PostgreSQL features, from writing simple SQL queries to developing complex databases. It is designed to query an active database (in real-time), allowing you to stay current with modifications and implementations.
Features of pgAdmin 4 include:
* auto-detection and support for objects discovered at run-time
* a live SQL query tool with direct data editing
* support for administrative queries
* a syntax-highlighting SQL editor
* redesigned graphical interfaces
* powerful management dialogs and tools for common tasks
* responsive, context-sensitive behavior
* supportive error messages
* helpful hints
* online help and information about using pgAdmin dialogs and tools.
When pgAdmin opens, the interface features a menu bar and a window divided into two panes: the *Browser* tree control in the left pane, and a tabbed browser in the right pane.
.. image:: images/pgadmin_welcome.png
Select an icon from the *Quick Links* panel on the *Dashboard* tab to:
* Click the *Add New Server* button to open the :ref:`Create - Server dialog <server_dialog>` to add a new server definition.
* Click the *Configure pgAdmin* button to open the :ref:`Preferences dialog <preferences>` to customize your pgAdmin client.
Links in the *Getting Started* panel open a new browser tab that provide useful information for Postgres users:
* Click the *PostgreSQL Documentation* link to navigate to the *Documentation* page for the PostgreSQL open-source project; once at the project site, you can review the manuals for the currently supported versions of the PostgreSQL server.
* Click the *pgAdmin Website* link to navigate to the pgAdmin project website. The pgAdmin site features news about recent pgAdmin releases and other project information.
* Click the *Planet PostgreSQL* link to navigate to the blog aggregator for Postgres related blogs.
* Click the *Community Support* link to navigate to the *Community* page at the PostgreSQL open-source project site; this page provides information about obtaining support for PostgreSQL features.
+30 -18
View File
@@ -2,11 +2,19 @@ import os
import sys
import inspect
if sys.version_info[0] >= 3:
import builtins
else:
import __builtin__ as builtins
# Ensure the global server mode is set.
builtins.SERVER_MODE = None
root = os.path.realpath(
os.path.dirname(
os.path.realpath(__file__)
) + '{0}..{0}..{0}web'.format(os.sep)
)
os.path.dirname(
os.path.realpath(__file__)
) + '{0}..{0}..{0}web'.format(os.sep)
)
if sys.path[0] != root:
sys.path.insert(0, root)
@@ -24,18 +32,19 @@ This document contains code for some of the important classes, listed as
below:\n\n""")
for m in [
'PgAdminModule', 'NodeView',
'BaseDriver', 'BaseConnection'
]:
'PgAdminModule', 'NodeView',
'BaseDriver', 'BaseConnection'
]:
target.write("* {0}_\n".format(m))
def print_code(outstream, name, module, info=None):
l = len(name)
name_len = len(name)
outstream.write("\n\n.. _{0}:\n\n{0}\n".format(name))
idx = 0
while idx < l:
while idx < name_len:
idx += 1
outstream.write("*")
@@ -52,21 +61,24 @@ def print_code(outstream, name, module, info=None):
print_code(
target, "PgAdminModule", PgAdminModule,
"""
target, "PgAdminModule", PgAdminModule,
"""
PgAdminModule is inherted from Flask.Blueprint module.
This module defines a set of methods, properties and attributes, that every module should implement.
This module defines a set of methods, properties and attributes,
that every module should implement.
""")
from pgadmin.browser.utils import NodeView
print_code(
target, "NodeView", NodeView,
"""
NodeView class helps exposing basic REST APIs for different operations used by
pgAdmin Browser. The basic idea has been taken from the `Flask's MethodView
<http://flask.pocoo.org/docs/0.10/api/#flask.views.MethodView>`_ class. Because
- we need a lot more operations (not, just CRUD), we can not use it directly.""")
target, "NodeView", NodeView,
"""
The NodeView class exposes basic REST APIs for different operations used by
the pgAdmin Browser. The basic idea has been taken from `Flask's MethodView
<http://flask.pocoo.org/docs/1.0/api/#flask.views.MethodView>`_ class. Because
we need a lot more operations (not, just CRUD), we can not use it directly.""")
from pgadmin.utils.driver.abstract import BaseDriver, BaseConnection
print_code(target, "BaseDriver", BaseDriver)
print_code(target, "BaseConnection", BaseConnection)
+37 -14
View File
@@ -1,44 +1,67 @@
.. _cast_dialog:
***************
The Cast Dialog
***************
********************
`Cast Dialog`:index:
********************
Use the *Cast* dialog to define a cast. A cast specifies how to convert a value from one data type to another.
Use the *Cast* dialog to define a cast. A cast specifies how to convert a value
from one data type to another.
The *Cast* dialog organizes the development of a cast through the following dialog tabs: *General* and *Definition*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Cast* dialog organizes the development of a cast through the following
dialog tabs: *General* and *Definition*. The *SQL* tab displays the SQL code
generated by dialog selections.
.. image:: images/cast_general.png
:alt: Cast dialog general tab
:align: center
Use the fields in the *General* tab to identify the cast:
* The *Name* field is disabled. The name that will be displayed in the *pgAdmin* tree control is the *Source* type concatenated with the *Target* type, and is generated automatically when you make selections on the *Cast* dialog *Definition* tab.
* The *Name* field is disabled. The name that will be displayed in the
*pgAdmin* tree control is the *Source* type concatenated with the *Target*
type, and is generated automatically when you make selections on the *Cast*
dialog *Definition* tab.
* Store notes about the cast in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/cast_definition.png
:alt: Cast dialog definition tab
:align: center
Use the fields in the *Definition* tab to define parameters:
* Use the drop-down listbox next to *Source type* to select the name of the source data type of the cast.
* Use the drop-down listbox next to *Target type* to select the name of the target data type of the cast.
* Use the drop-down listbox next to *Function* to select the function used to perform the cast. The function's result data type must match the target type of the cast.
* Move the *Context* switch to the *Implicit* position if the cast is implicit. By default, a cast can be invoked only by an explicit cast request. If the cast is marked *Implicit* then it can be invoked implicitly in any context, whether by assignment or internally in an expression.
* Use the drop-down listbox next to *Source type* to select the name of the
source data type of the cast.
* Use the drop-down listbox next to *Target type* to select the name of the
target data type of the cast.
* Use the drop-down listbox next to *Function* to select the function used to
perform the cast. The function's result data type must match the target type
of the cast.
* Move the *Context* switch to the *Implicit* position if the cast is implicit.
By default, a cast can be invoked only by an explicit cast request. If the
cast is marked *Implicit* then it can be invoked implicitly in any context,
whether by assignment or internally in an expression.
Click the *SQL* tab to continue.
Your entries in the *Cast* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Cast* dialog generate a SQL command (see an example below).
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
SQL command.
**Example**
The following is an example of the sql command generated by user selections in the *Cast* dialog:
The following is an example of the sql command generated by user selections in
the *Cast* dialog:
.. image:: images/cast_sql.png
:alt: Cast dialog sql tab
:align: center
The cast uses a function named *int4(bigint)* to convert a biginteger data type to an integer.
The cast uses a function named *int4(bigint)* to convert a biginteger data type
to an integer.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+25 -11
View File
@@ -1,26 +1,40 @@
.. _change_password_dialog:
**************************
The Change Password Dialog
**************************
*******************************
`Change Password Dialog`:index:
*******************************
It is a good policy to routinely change your password to protect data, even in what you may consider a 'safe' environment. In the workplace, failure to apply an appropriate password policy could leave you in breach of Data Protection laws.
It is a good policy to routinely change your password to protect data, even in
what you may consider a 'safe' environment. In the workplace, failure to apply
an appropriate password policy could leave you in breach of Data Protection
laws.
Please consider the following guidelines when selecting a password:
Please consider the following guidelines when selecting a password:
* Ensure that your password is an adequate length; 6 characters should be the absolute minimum number of characters in the password.
* Ensure that your password is not open to dictionary attacks. Use a mixture of upper and lower case letters and numerics, and avoid words or names. Consider using the first letter from each word in a phrase that you will remember easily but is an unfamiliar acronym.
* Ensure that your password is changed regularly; at minimum, change it every ninety days.
* Ensure that your password is an adequate length; 6 characters should be the
absolute minimum number of characters in the password.
* Ensure that your password is not open to dictionary attacks. Use a mixture of
upper and lower case letters and numerics, and avoid words or names. Consider
using the first letter from each word in a phrase that you will remember
easily but is an unfamiliar acronym.
* Ensure that your password is changed regularly; at minimum, change it every
ninety days.
The above should be considered a starting point: It is not a comprehensive list and it **will not guarantee security**.
The guidelines above should be considered a starting point: They are not a
comprehensive list and they **will not guarantee security**.
.. image:: images/password.png
:alt: Change database password dialog
:align: center
Use the *Change Password* dialog to change your password:
* The name displayed in the *User* field is the role for which you are modifying the password; it is the role that is associated with the server connection that is highlighted in the tree control.
* The name displayed in the *User* field is the role for which you are modifying
the password; it is the role that is associated with the server connection
that is highlighted in the tree control.
* Enter the password associated with the role in the *Current Password* field.
* Enter the desired password for in the *New Password* field.
* Re-enter the new password in the *Confirm Password* field.
Click the *OK* button to change your password; click *Cancel* to exit the dialog without changing your password.
Click the *OK* button to change your password; click *Cancel* to exit the dialog
without changing your password.
+37
View File
@@ -0,0 +1,37 @@
.. _change_user_password:
************************************
`Change User Password Dialog`:index:
************************************
It is a good policy to routinely change your password to protect data, even in
what you may consider a 'safe' environment. In the workplace, failure to apply
an appropriate password policy could leave you in breach of Data Protection
laws.
Please consider the following guidelines when selecting a password:
* Ensure that your password is an adequate length; 6 characters should be the
absolute minimum number of characters in the password.
* Ensure that your password is not open to dictionary attacks. Use a mixture of
upper and lower case letters and numerics, and avoid words or names. Consider
using the first letter from each word in a phrase that you will remember
easily but is an unfamiliar acronym.
* Ensure that your password is changed regularly; at minimum, change it every
ninety days.
The guidelines above should be considered a starting point: They are not a
comprehensive list and they **will not guarantee security**.
.. image:: images/change_user_password.png
:alt: Change current user password dialog
:align: center
Use the *Change Password* dialog to change your password:
* Enter your existing password in the *Current Password* field.
* Enter the desired password for in the *New Password* field.
* Re-enter the new password in the *Confirm Password* field.
Click the *Change Password* button to change your password; click *Close* to
exit the dialog.
+35 -14
View File
@@ -1,44 +1,65 @@
.. _check_dialog:
****************
The Check Dialog
****************
*********************
`Check Dialog`:index:
*********************
Use the *Check* dialog to define or modify a check constraint. A check constraint specifies an expression that produces a Boolean result that new or updated rows must satisfy for an insert or update operation to succeed.
Use the *Check* dialog to define or modify a check constraint. A check
constraint specifies an expression that produces a Boolean result that new or
updated rows must satisfy for an insert or update operation to succeed.
The *Check* dialog organizes the development of a check constraint through the *General* and *Definition* tabs. The *SQL* tab displays the SQL code generated by dialog selections.
The *Check* dialog organizes the development of a check constraint through the
*General* and *Definition* tabs. The *SQL* tab displays the SQL code generated
by dialog selections.
.. image:: images/check_general.png
:alt: Check dialog general tab
:align: center
Use the fields in the *General* tab to identify the check constraint:
* Use the *Name* field to provide a descriptive name for the check constraint that will be displayed in the *pgAdmin* tree control. With PostgreSQL 9.5 forward, when a table has multiple check constraints, they will be tested for each row in alphabetical order by name and after NOT NULL constraints.
* Store notes about the check constraint in the *Comment* field.
* Use the *Name* field to provide a descriptive name for the check constraint
that will be displayed in the *pgAdmin* tree control. With PostgreSQL 9.5
forward, when a table has multiple check constraints, they will be tested for
each row in alphabetical order by name and after NOT NULL constraints.
* Store notes about the check constraint in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/check_definition.png
:alt: Check dialog definition tab
:align: center
Use the fields in the *Definition* tab to define the check constraint:
* Provide the expression that a row must satisfy in the *Check* field.
* Move the *No Inherit?* switch to the *Yes* position to specify this constraint is automatically inherited by a table's children. The default is *No*.
* Move the *Don't validate?* switch to the *No* position to skip validation of existing data; the constraint may not hold for all rows in the table. The default is *Yes*.
* Move the *No Inherit?* switch to the *Yes* position to specify this constraint
is automatically inherited by a table's children. The default is *No*.
* Move the *Don't validate?* switch to the *No* position to skip validation of
existing data; the constraint may not hold for all rows in the table. The
default is *Yes*.
Click the *SQL* tab to continue.
Your entries in the *Check* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Check* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
The following is an example of the sql command generated by user selections in the *Check* dialog:
The following is an example of the sql command generated by user selections in
the *Check* dialog:
.. image:: images/check_sql.png
:alt: Check dialog sql tab
:align: center
The example shown demonstrates creating a check constraint named *check_price* on the *price* column of the *products* table. The constraint confirms that any values added to the column are greater than 0.
The example shown demonstrates creating a check constraint named *check_price*
on the *price* column of the *products* table. The constraint confirms that
any values added to the column are greater than 0.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+26
View File
@@ -0,0 +1,26 @@
.. _clear_saved_passwords:
******************************
`Clear Saved Passwords`:index:
******************************
Use *Clear Saved Password* functionality to clear the saved password for the
database server.
.. image:: images/clear_saved_password.png
:align: center
*Clear Saved Password* shows in the context menu for the selected server as well
as under the *Object* menu on the top menu bar.
Use *Clear SSH Tunnel Password* functionality to clear the saved password of SSH
Tunnel to connect to the database server.
.. image:: images/clear_tunnel_password.png
:align: center
*Clear SSH Tunnel Password* shows in the context menu for the selected server as
well as under the *Object* menu on the top menu bar.
**Note:** It will be enabled/visible when the password for the selected database
server is already saved.
+11 -11
View File
@@ -1,8 +1,8 @@
.. _code_overview:
*************
Code Overview
*************
**********************
`Code Overview`:index:
**********************
The bulk of pgAdmin is a Python web application written using the Flask framework
on the backend, and HTML5 with CSS3, Bootstrap and jQuery on the front end. A
@@ -10,14 +10,14 @@ desktop runtime is also included for users that prefer a desktop application to
a web application, which is written in C++ using the QT framework.
Runtime
=======
*******
The runtime is essentially a Python webserver and browser in a box. Found in the
**/runtime** directory in the source tree, it is a relatively simple QT
application that is most easily modified using the **QT Creator** application.
Web Application
===============
***************
The web application forms the bulk of pgAdmin and can be found in the **/web**
directory in the source tree. The main file is **pgAdmin4.py** which can be used
@@ -25,7 +25,7 @@ to run the built-in standalone web server, or as a WSGI application for producti
use.
Configuration
-------------
=============
The core application configuration is found in **config.py**. This file includes
all configurable settings for the application, along with descriptions of their
@@ -34,7 +34,7 @@ a web server; these can be overriden in **config_local.py** to avoid modifying
the main configuration file.
User Settings
-------------
=============
When running in desktop mode, pgAdmin has a single, default user account that is
used for the desktop user. When running in server mode, there may be unlimited
@@ -57,7 +57,7 @@ The local configuration will determine how the script sets up the database,
particularly with regard to desktop vs. server mode.
pgAdmin Core
============
************
The heart of pgAdmin is the **pgadmin** package. This contains the globally
available HTML templates used by the Jinja engine, as well as any global static
@@ -68,7 +68,7 @@ is responsible for setting up logging and authentication, dynamically loading
other modules, and a few other tasks.
Modules
=======
*******
Units of functionality are added to pgAdmin through the addition of modules.
Theses are Python object instance of classes, inherits the
@@ -190,7 +190,7 @@ loaded modules, but must use the defined hook points and fail gracefully in the
event that a particular module is not present.
Nodes
=====
*****
Nodes are very similar to modules, it represents an individual node or,
collection object on the browser treeview. To recognised as a node module, a
@@ -202,7 +202,7 @@ Python package (along with javascript modules) must be created. This must:
3) An instance of the class object
Front End
=========
*********
pgAdmin uses javascript extensively for the front-end implementation. It uses
require.js to allow the lazy loading (or, say load only when required),
+7 -4
View File
@@ -1,19 +1,22 @@
.. _code_review:
*****************
Code Review Notes
*****************
**************************
`Code Review Notes`:index:
**************************
This document lists a number of standard items that will be checked during the
review process for any patches submitted for inclusion in pgAdmin.
* Ensure all code follows the pgAdmin :doc:`coding_standards`.
* Ensure all code has unit test coverage and API/feature test coverage where
appropriate.
* Copyright years must be correct and properly formatted (to make it easy to make
bulk updates every year). The start date should always be 2013, and the end year
the current year, e.g.
Copyright (C) 2013 - 2016, The pgAdmin Development Team
Copyright (C) 2013 - 2019, The pgAdmin Development Team
* Ensure there's a blank line immediately following any copyright headers.
+13 -10
View File
@@ -1,14 +1,14 @@
.. _coding_standards:
****************
Coding Standards
****************
*************************
`Coding Standards`:index:
*************************
pgAdmin uses multiple technologies and multiple languages, each of which have
their own coding standards.
General
=======
*******
In all languages, indentations should be made with 4 spaces, and excessively long
lines wrapped where appropriate to ensure they can be read on smaller displays
@@ -20,7 +20,7 @@ Comments should be included in all code where required to explain its
purpose or how it works if not obvious from a quick review of the code itself.
CSS 3
=====
*****
CSS3 is used for styling and layout throughout the application. Extensive use is
made of the Bootstrap Framework to aid in that process, however additional
@@ -54,7 +54,7 @@ Styles should be specified clearly, one per line. For example:
All stylesheets must be CSS3 compliant.
HTML 5
======
******
HTML 5 is used for page structure throughout the application, in most cases
being rendered from templates by the Jinja2 template engine in Flask.
@@ -62,7 +62,7 @@ being rendered from templates by the Jinja2 template engine in Flask.
All HTML must be HTML 5 compliant.
Javascript
==========
**********
Client-side code is written in Javascript using jQuery and various plugins.
Whilst much of the code is rendered from static files, there is also code that
@@ -106,8 +106,11 @@ Note the use of a descriptive function name, using the underscore character to
separate words in all lower case, and short but descriptive lower case variable
names.
.. note:: From version 3.0 onwards, new or refactored code should be written using
ES6 features and conventions.
C++
---
***
C++ code is used in the desktop runtime for the application, primarily with the
QT framework and an embedded Python interpreter. Note the use of hanging braces,
@@ -155,7 +158,7 @@ which may be omitted if on a single statement is present:
}
Python
======
******
Python is used for the backend web server. All code must be compatible with
Python 2.7 and should include PyDoc comments whilst following the official
@@ -167,7 +170,7 @@ with the required file header is shown below::
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2015, The pgAdmin Development Team
# Copyright (C) 2013 - 2019, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################
+54 -21
View File
@@ -1,50 +1,83 @@
.. _collation_dialog:
********************
The Collation Dialog
********************
*************************
`Collation Dialog`:index:
*************************
Use the *Collation* dialog to define a collation. A collation is an SQL schema object that maps a SQL name to operating system locales. To create a collation, you must have a CREATE privilege on the destination schema.
Use the *Collation* dialog to define a collation. A collation is an SQL schema
object that maps a SQL name to operating system locales. To create a collation,
you must have a CREATE privilege on the destination schema.
The *Collation* dialog organizes the development of a collation through the following dialog tabs: *General* and *Definition*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Collation* dialog organizes the development of a collation through the
following dialog tabs: *General* and *Definition*. The *SQL* tab displays the
SQL code generated by dialog selections.
.. image:: images/collation_general.png
:alt: Collation dialog general tab
:align: center
Use the fields in the *General* tab to identify the collation:
* Use the *Name* field to provide a name for the collation. The collation name must be unique within a schema. The name will be displayed in the *pgAdmin* tree control.
* Select the name of the owner from the drop-down listbox in the *Owner* field.
* Select the name of the schema in which the collation will reside from the drop-down listbox in the *Schema* field.
* Use the *Name* field to provide a name for the collation. The collation name
must be unique within a schema. The name will be displayed in the *pgAdmin*
tree control.
* Select the name of the owner from the drop-down listbox in the *Owner* field.
* Select the name of the schema in which the collation will reside from the
drop-down listbox in the *Schema* field.
* Store notes about the collation in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/collation_definition.png
:alt: Collation dialog definition tab
:align: center
Use the fields in the *Definition* tab to specify the operating system locale settings:
Use the fields in the *Definition* tab to specify the operating system locale
settings:
* Use the drop-down listbox next to *Copy collation* to select the name of an existing collation to copy. The new collation will have the same properties as the existing one, but will be an independent object. If you choose to copy an existing collation, you cannot modify the collation properties displayed on this tab.
* Use the *Locale* field to specify a locale; a locale specifies language and language formatting characteristics. If you specify this, you cannot specify either of the following parameters. To view a list of locales supported by your Linux system use the command *locale -a*.
* Use the *LC_COLLATE* field to specify a locale with specified string sort order. The locale must be applicable to the current database encoding. (See CREATE DATABASE for details.)
* Use the *LC_CTYPE* field to specify a locale with specified character classification. The locale must be applicable to the current database encoding. (See CREATE DATABASE for details.)
* Use the drop-down listbox next to *Copy collation* to select the name of an
existing collation to copy. The new collation will have the same properties
as the existing one, but will be an independent object. If you choose to copy
an existing collation, you cannot modify the collation properties displayed on
this tab.
* Use the *Locale* field to specify a locale; a locale specifies language and
language formatting characteristics. If you specify this, you cannot specify
either of the following parameters. To view a list of locales supported by
your Linux system use the command *locale -a*.
* Use the *LC_COLLATE* field to specify a locale with specified string sort
order. The locale must be applicable to the current database encoding. (See
CREATE DATABASE for details.)
* Use the *LC_CTYPE* field to specify a locale with specified character
classification. The locale must be applicable to the current database encoding.
(See CREATE DATABASE for details.)
Click the *SQL* tab to continue.
Your entries in the *Collation* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Collation* dialog generate a SQL command (see an example b
elow). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Collation* dialog:
The following is an example of the sql command generated by user selections in
the *Collation* dialog:
.. image:: images/collation_sql.png
:alt: Collation dialog sql tab
:align: center
The example shown demonstrates creating a collation named *french* that uses the rules specified for the locale, *fr_FR.utf8. The collation is owned by *postgres*.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation. For more information about setting a locale, see Chapter 22.1 Locale Support of the PostgreSQL core documentation:
The example shown demonstrates creating a collation named *french* that uses the
rules specified for the locale, *fr-BI-x-icu. The collation is owned by
*postgres*.
* Click the *Info* button (i) to access online help. For more information about
setting a locale, see Chapter 22.1 Locale Support of the PostgreSQL core
documentation:
https://www.postgresql.org/docs/current/locale.html
http://www.postgresql.org/docs/9.5/static/locale.html
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+70 -29
View File
@@ -1,71 +1,112 @@
.. _column_dialog:
*****************
The Column Dialog
*****************
**********************
`Column Dialog`:index:
**********************
Use the *Column* dialog to add a column to an existing table or modify a column definition.
Use the *Column* dialog to add a column to an existing table or modify a column
definition.
The *Column* dialog organizes the development of a column through the following
dialog tabs: *General*, *Definition*, and *Security*. The *SQL* tab displays the
SQL code generated by dialog selections.
The *Column* dialog organizes the development of a column through the following dialog tabs: *General*, *Definition*, and *Security*. The *SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/column_general.png
:alt: Column dialog general tab
:align: center
Use the fields in the *General* tab to identify the column:
* Use the *Name* field to add a descriptive name for the column. The name will be displayed in the *pgAdmin* tree control. This field is required.
* Use the *Name* field to add a descriptive name for the column. The name will
be displayed in the *pgAdmin* tree control. This field is required.
* Store notes about the column in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/column_definition.png
:alt: Column dialog definition tab
:align: center
Use the fields in the *Definition* tab to add parameters for the column. (Fields are disabled if inapplicable.)
Use the fields in the *Definition* tab to add parameters for the column. (Fields
are disabled if inapplicable.)
* Use the drop-down listbox next to *Data Type* to select a data type for the column. For more information on the data types that are supported by PostgreSQL, refer to Chapter 8 of the Postgres core documentation. This field is required.
* Use the *Length* and *Precision* fields to specify the maximum number of significant digits in a numeric value, or the maximum number of characters in a text value.
* Use the drop-down listbox next to *Collation* to apply a collation setting to the column.
* Use the drop-down listbox next to *Data Type* to select a data type for the
column. For more information on the data types that are supported by
PostgreSQL, refer to Chapter 8 of the Postgres core documentation. This field
is required.
* Use the *Length* and *Precision* fields to specify the maximum number of
significant digits in a numeric value, or the maximum number of characters in
a text value.
* Use the drop-down listbox next to *Collation* to apply a collation setting to
the column.
* Use the *Default Value* field to specify a default data value.
* Move the *Not Null* switch to the *Yes* position to specify the column may not contain null values. The default is *No*.
* Move the *Not Null* switch to the *Yes* position to specify the column may not
contain null values. The default is *No*.
Click the *Variables* tab to continue.
.. image:: images/column_variables.png
:alt: Column dialog variables tab
:align: center
Use the *Variables* tab to to specify the number of distinct values that may be present in the column; this value overrides estimates made by the ANALYZE command. Click the *Add* icon (+) to add a *Name*/*Value* pair:
Use the *Variables* tab to to specify the number of distinct values that may be
present in the column; this value overrides estimates made by the ANALYZE
command. Click the *Add* icon (+) to add a *Name*/*Value* pair:
* Select the name of the variable from the drop-down listbox in the *Name* field.
* Select *n_distinct* to specify the number of distinct values for the column.
* Select *n_distinct_inherited* to specify the number of distinct values for the table and its children.
* Select the name of the variable from the drop-down listbox in the *Name* field.
* Specify the number of distinct values in the *Value* field. For more information, see the documentation for `ALTER TABLE <http://www.postgresql.org/docs/9.6/static/sql_altertable.html>`_.
* Select *n_distinct* to specify the number of distinct values for the column.
* Select *n_distinct_inherited* to specify the number of distinct values
for the table and its children.
Click the *Add* icon (+) to specify each additional *Name*/*Value* pair; to discard a variable, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
* Specify the number of distinct values in the *Value* field. For more
information, see the documentation for
`ALTER TABLE <https://www.postgresql.org/docs/current/sql-altertable.html>`_.
Click the *Add* icon (+) to specify each additional *Name*/*Value* pair; to
discard a variable, click the trash icon to the left of the row and confirm
deletion in the *Delete Row* popup.
Click the *Security* tab to continue.
.. image:: images/column_security.png
:alt: Column dialog security tab
:align: center
Use the *Security* tab to assign attributes and define security labels. Click the *Add* icon (+) to add each security label selection:
Use the *Security* tab to assign attributes and define security labels. Click
the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them.
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
Click the *Add* icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to assign additional security labels; to discard a
security label, click the trash icon to the left of the row and confirm deletion
in the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Column* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Column* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Column* dialog:
The following is an example of the sql command generated by user selections in
the *Column* dialog:
.. image:: images/column_sql.png
:alt: Column dialog sql tab
:align: center
The example shown demonstrates creating a column named *territory* in the table named *distributors*.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example shown demonstrates creating a column named *territory* in the table
named *distributors*.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+74 -53
View File
@@ -3,7 +3,8 @@
# pgAdmin III documentation build configuration file, created by
# sphinx-quickstart on Sat Jul 9 15:58:11 2011.
#
# This file is execfile()d with the current directory set to its containing dir.
# This file is execfile()d with the current directory set to its containing
# directory.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
@@ -11,7 +12,16 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
import os
import sys
if sys.version_info[0] >= 3:
import builtins
else:
import __builtin__ as builtins
# Ensure the global server mode is set.
builtins.SERVER_MODE = None
# Import the pgAdmin config
root = os.path.dirname(os.path.realpath(__file__))
@@ -21,15 +31,15 @@ import config
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# -- General configuration ----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = []
# Add any paths that contain templates here, relative to this directory.
@@ -39,7 +49,7 @@ templates_path = ['_templates']
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
@@ -59,40 +69,41 @@ release = config.APP_VERSION
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# The reST default role (used for this markup: `text`) to use for all
# documents.
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# -- Options for HTML output --------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
@@ -101,37 +112,40 @@ html_theme = 'classic'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = {
html_theme_options = {
'collapsiblesidebar': True,
'relbarbgcolor': '#2C76B4',
'relbarbgcolor': '#326690',
'sidebarbgcolor': '#E2E2E2',
'sidebarbtncolor': '#2C76B4',
'sidebartextcolor': '#000',
'sidebarlinkcolor': '#337AB7',
'footerbgcolor': '#333',
'codebgcolor': '#D9EDF7',
'sidebarbtncolor': '#326690',
'sidebartextcolor': '#222222',
'sidebarlinkcolor': '#326690',
'footerbgcolor': '#222222',
'codebgcolor': '#d6effc',
'textcolor': '#222222',
'headbgcolor': '#E2E2E2',
'headtextcolor': '#326690',
'bodyfont': '"Helvetica Neue", Helvetica, Arial, sans-serif',
'headfont': '"Helvetica Neue", Helvetica, Arial, sans-serif'
}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
@@ -140,30 +154,30 @@ html_static_path = ['images']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# html_sidebars = {}
html_sidebars = {
'**': ['localtoc.html', 'globaltoc.html', 'searchbox.html']
}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# html_split_index = False
# If true, links to the reST sources are added to the pages.
html_show_sourcelink = False
@@ -177,55 +191,62 @@ html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'pgadmin4'
# -- Options for LaTeX output --------------------------------------------------
# -- Options for LaTeX output -------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
# (source start file, target name, title, author, documentclass
# [howto/manual]).
latex_documents = [
('index', 'pgadmin4.tex', u'pgAdmin 4 Documentation',
u'The pgAdmin Development Team', 'manual'),
('index', 'pgadmin4.tex', u'pgAdmin 4 Documentation',
u'The pgAdmin Development Team', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# latex_domain_indices = True
# Fix the indexing for our docs. See:
# https://groups.google.com/forum/#!topic/sphinx-users/ZlQ95_QikXo
latex_elements = {
'fncychap': r'\usepackage[Sonny]{fncychap}',
}
# -- Options for manual page output --------------------------------------------
# -- Options for manual page output -------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
+44 -15
View File
@@ -1,47 +1,76 @@
.. _connect_error:
**************************
`Connection error`:index:
**************************
*************************
`Connection Error`:index:
*************************
When connecting to a PostgreSQL server, you may get an error message. If you encounter an error message, please review the message carefully; each error message attempts to incorporate the information you'll need to resolve the problem. For more details about specific errors, please locate the error message in the list below:
When connecting to a PostgreSQL server, you may get an error message. If you
encounter an error message, please review the message carefully; each error
message attempts to incorporate the information you'll need to resolve the
problem. For more details about specific errors, please locate the error
message in the list below:
**Connection to the server has been lost**
.. image:: images/ce_timeout.png
:alt: Connection to the server has been lost
:align: center
This error message indicates that the connection attempt has taken longer than the specified threshold; there may be a problem with the connection properties provided on the *Server* dialog, network connectivity issues, or the server may not be running.
This error message indicates that the connection attempt has taken longer than
the specified threshold; there may be a problem with the connection properties
provided on the *Server* dialog, network connectivity issues, or the server may
not be running.
**could not connect to Server: Connection refused**
**could not connect to Server: Connection refused**
.. image:: images/ce_not_running.png
:alt: Could not connect to server
:align: center
If pgAdmin displays this message, there are two possible reasons for this:
If pgAdmin displays this message, there are two possible reasons for this:
* the database server isn't running - simply start it.
* the server isn't configured to accept TCP/IP requests on the address shown.
For security reasons, a PostgreSQL server "out of the box" doesn't listen on TCP/IP ports. Instead, it must be enabled to listen for TCP/IP requests. This can be done by adding **tcpip = true** to the postgresql.conf file for Versions 7.3.x and 7.4.x, or **listen_addresses='*'** for Version 8.0.x and above; this will make the server accept connections on any IP interface.
For security reasons, a PostgreSQL server "out of the box" doesn't listen on
TCP/IP ports. Instead, it must be enabled to listen for TCP/IP requests. This
can be done by adding **listen_addresses='*'**; this will make the server accept
connections on any IP interface.
For further information, please refer to the PostgreSQL documentation about `runtime configuration <http://www.postgresql.org/docs/current/interactive/runtime-config.html>`_.
For further information, please refer to the PostgreSQL documentation about
`runtime configuration <https://www.postgresql.org/docs/current/runtime-config.html>`_.
**FATAL: no pg_hba.conf entry**
.. image:: images/ce_error_hba.png
:alt: No pg_hba.conf entry
:align: center
If pgAdmin displays this message when connecting, your server can be contacted correctly over the network, but is not configured to accept your connection. Your client has not been detected as a legal user for the database.
If pgAdmin displays this message when connecting, your server can be contacted
correctly over the network, but is not configured to accept your connection.
Your client has not been detected as a legal user for the database.
To connect to a server, the pg_hba.conf file on the database server must be configured to accept connections from the host of the pgAdmin client. Modify the pg_hba.conf file on the database server host, and add an entry in the form:
To connect to a server, the pg_hba.conf file on the database server must be
configured to accept connections from the host of the pgAdmin client. Modify
the pg_hba.conf file on the database server host, and add an entry in the form:
* **host template1 postgres 192.168.0.0/24 md5** for an IPV4 network
* **host template1 postgres 192.168.0.0/24 md5** for an IPV4 network
* **host template1 postgres ::ffff:192.168.0.0/120 md5** for an IPV6 network
For more information, please refer to the PostgreSQL documentation about `client authentication <http://www.postgresql.org/docs/current/interactive/client-authentication.html>`_.
For more information, please refer to the PostgreSQL documentation about
`client authentication <https://www.postgresql.org/docs/current/client-authentication.html>`_.
**FATAL: password authentication failed**
.. image:: images/ce_password_failed.png
* The *password authentication failed for user* error message indicates there may be a problem with the password you entered. Retry the password to confirm you entered it correctly. If the error message returns, make sure that you have the correct password, that you are authorized to access the server, and that the access has been correctly configured in the server's postgresql.conf configuration file.
:alt: Password authentication failed
:align: center
The *password authentication failed for user* error message indicates there
may be a problem with the password you entered. Retry the password to confirm
you entered it correctly. If the error message returns, make sure that you have
the correct password, that you are authorized to access the server, and that
the access has been correctly configured in the server's postgresql.conf
configuration file.
+38 -10
View File
@@ -1,20 +1,48 @@
.. _connect_to_server:
*****************
Connect to server
*****************
**************************
`Connect to Server`:index:
**************************
Use the *Connect to Server* dialog to authenticate with a defined server and access the objects stored on the server through the pgAdmin tree control. To access the dialog, right click on the server name in the *pgAdmin* tree control, and select *Connect Server...* from the context menu.
Use the *Connect to Server* dialog to authenticate with a defined server and
access the objects stored on the server through the pgAdmin tree control. To
access the dialog, right click on the server name in the *pgAdmin* tree control,
and select *Connect Server...* from the context menu.
.. image:: images/connect_to_server.png
:alt: Connect to server dialog
Provide authentication information for the selected server:
* Use the *Password* field to provide the password of the user that is associated with the defined server.
* Check the box next to *Save Password* to instruct the server to save the password for future connections; if you save the password, you will not be prompted when reconnecting to the database server with this server definition.
The pgAdmin client displays a message in a green status bar in the lower right corner when the server connects successfully.
* Use the *Password* field to provide the password of the user that is
associated with the defined server.
* Check the box next to *Save Password* to instruct the server to save the
password for future connections; if you save the password, you will not be
prompted when reconnecting to the database server with this server
definition.
If you receive an error message while attempting a connection, verify that your network is allowing the pgAdmin host and the host of the database server to communicate. For detailed information about a specific error message, please see the :ref:`Connection Error <connect_error>` help page.
When using SSH Tunneling, the *Connect to Server* dialog will prompt for the SSH
Tunnel and Database server passwords if not already saved.
To review or modify connection details, right-click on the name of the server, and select *Properties...* from the context menu.
.. image:: images/connect_to_tunneled_server.png
:alt: Connect to server dialog
Provide authentication information for the selected server:
* Use the *Password* field to provide the password of the user that is
associated with the defined server.
* Check the box next to respective *Save Password* to instruct the server to
save the password for future connections; if you save the password, you will
not be prompted when reconnecting to the database server with this server
definition.
The pgAdmin client displays a message in a green status bar in the lower right
corner when the server connects successfully.
If you receive an error message while attempting a connection, verify that your
network is allowing the pgAdmin host and the host of the database server to
communicate. For detailed information about a specific error message, please see
the :ref:`Connection Error <connect_error>` help page.
To review or modify connection details, right-click on the name of the server,
and select *Properties...* from the context menu.
+25 -13
View File
@@ -1,30 +1,42 @@
.. _connecting:
**********************
Connecting to a Server
**********************
*******************************
`Connecting To A Server`:index:
*******************************
Before you can use the pgAdmin client to manage the objects that reside on your Postgres server, you must define a connection to the server. You can (optionally) use the *Server Group* dialog to create server groups to organize the server connections within the tree control for easier management. To open the *Server Group* dialog, right-click on the *Servers* node of the tree control, and select *Server Group* from the *Create* menu.
Contents:
Before you can use the pgAdmin client to manage the objects that reside on your
Postgres server, you must define a connection to the server. You can
(optionally) use the *Server Group* dialog to create server groups to organize
the server connections within the tree control for easier management. To open
the *Server Group* dialog, right-click on the *Servers* node of the tree
control, and select *Server Group* from the *Create* menu.
.. toctree::
server_group_dialog
Use the fields on the *Server* dialog to define the connection properties for each new server that you wish to manage with pgAdmin. To open the *Server* dialog, right-click on the *Servers* node of the tree control, and select *Server* from the *Create* menu.
Contents:
Use the fields on the *Server* dialog to define the connection properties for
each new server that you wish to manage with pgAdmin. To open the *Server*
dialog, right-click on the *Servers* node of the tree control, and select
*Server* from the *Create* menu.
.. toctree::
server_dialog
After defining a server connection, right-click on the server name, and select *Connect to server* to authenticate with the server, and start using pgAdmin to manage objects that reside on the server.
Contents:
After defining a server connection, right-click on the server name, and select
*Connect to server* to authenticate with the server, and start using pgAdmin to
manage objects that reside on the server.
.. toctree::
connect_to_server
connect_error
connect_error
Server definitions (and their groups) can be exported to a JSON file and
re-imported to the same or a different system to enable easy pre-configuration
of pgAdmin.
.. toctree::
import_export_servers
+143
View File
@@ -0,0 +1,143 @@
.. _container_deployment:
*****************************
`Container Deployment`:index:
*****************************
pgAdmin can be deployed in a container using the image at:
https://hub.docker.com/r/dpage/pgadmin4/
PostgreSQL Utilities
********************
The PostgreSQL utilities *pg_dump*, *pg_dumpall*, *pg_restore* and *psql* are
included in the container to allow backups to be created and restored and other
maintenance functions to be executed. Multiple versions are included in the
following directories to allow use with different versions of the database
server:
* PostgreSQL 9.4: */usr/local/pgsql-9.4*
* PostgreSQL 9.5: */usr/local/pgsql-9.5*
* PostgreSQL 9.6: */usr/local/pgsql-9.6*
* PostgreSQL 10: */usr/local/pgsql-10*
* PostgreSQL 11: */usr/local/pgsql-11*
The most recent version of the utilities is used by default; this may be
changed in the :ref:`preferences`.
Environment Variables
*********************
The container will accept the following variables at startup:
*PGADMIN_DEFAULT_EMAIL*
This is the email address used when setting up the initial administrator account
to login to pgAdmin. This variable is required and must be set at launch time.
*PGADMIN_DEFAULT_PASSWORD*
This is the password used when setting up the initial administrator account to
login to pgAdmin. This variable is required and must be set at launch time.
*PGADMIN_ENABLE_TLS*
Default: <null>
If left un-set, the container will listen on port 80 for connections in plain
text. If set to any value, the container will listen on port 443 for TLS
connections.
When TLS is enabled, a certificate and key must be provided. Typically these
should be stored on the host file system and mounted from the container. The
expected paths are /certs/server.crt and /certs/server.key
*PGADMIN_LISTEN_ADDRESS*
Default: [::]
Specify the local address that the servers listens on. The default should work
for most users - in IPv4-only environments, this may need to be set to
127.0.0.1.
*PGADMIN_LISTEN_PORT*
Default: 80 or 443 (if TLS is enabled)
Allows the port that the server listens on to be set to a specific value rather
than using the default.
*GUNICORN_THREADS*
Default: 25
Adjust the number of threads the Gunicorn server uses to handle incoming
requests. This should typically be left as-is, except in highly loaded systems
where it may be increased.
Mapped Files and Directories
****************************
The following files or directories can be mapped from the container onto the
host machine to allow configuration to be customised and shared between
instances:
*/var/lib/pgadmin*
This is the working directory in which pgAdmin stores session data, user files,
configuration files, and it's configuration database. Mapping this directory
onto the host machine gives you an easy way to maintain configuration between
invocations of the container.
*/pgadmin4/config_local.py*
This file can be used to override configuration settings in pgAdmin. Settings
found in config.py can be overridden with deployment specific values if
required.
*/pgadmin4/servers.json*
If this file is mapped, server definitions found in it will be loaded at launch
time. This allows connection information to be pre-loaded into the instance of
pgAdmin in the container.
*/certs/server.cert*
If TLS is enabled, this file will be used as the servers TLS certificate.
*/certs/server.key*
If TLS is enabled, this file will be used as the key file for the servers TLS
certificate.
Examples
********
Run a simple container over port 80:
.. code-block:: bash
docker pull dpage/pgadmin4
docker run -p 80:80 \
-e "PGADMIN_DEFAULT_EMAIL=user@domain.com" \
-e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
-d dpage/pgadmin4
Run a TLS secured container using a shared config/storage directory in
/private/var/lib/pgadmin on the host, and servers pre-loaded from
/tmp/servers.json on the host:
.. code-block:: bash
docker pull dpage/pgadmin4
docker run -p 443:443 \
-v "/private/var/lib/pgadmin:/var/lib/pgadmin" \
-v "/path/to/certificate.cert:/certs/server.cert" \
-v "/path/to/certificate.key:/certs/server.key" \
-v "/tmp/servers.json:/servers.json" \
-e "PGADMIN_DEFAULT_EMAIL=user@domain.com" \
-e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
-e "PGADMIN_ENABLE_TLS=True" \
-d dpage/pgadmin4
+10 -7
View File
@@ -1,14 +1,17 @@
.. _contributions:
*****************************
pgAdmin Project Contributions
*****************************
**************************************
`pgAdmin Project Contributions`:index:
**************************************
pgAdmin is an open-source project that invites you to get involved in the development process. For more information about contributing to the pgAdmin project, contact the developers on the pgAdmin mailing list pgadmin-hackers@postgresql.org to discuss any ideas you might have for enhancements or bug fixes.
pgAdmin is an open-source project that invites you to get involved in the
development process. For more information about contributing to the pgAdmin
project, contact the developers on the pgAdmin mailing list
pgadmin-hackers@postgresql.org to discuss any ideas you might have for
enhancements or bug fixes.
In the sections listed below, you'll find detailed information about the development process used to develop, improve, and maintain the pgAdmin client.
Contents:
In the following sections, you'll find detailed information about the
development process used to develop, improve, and maintain the pgAdmin client.
.. toctree::
+75 -32
View File
@@ -1,80 +1,123 @@
.. _database_dialog:
*******************
The Database Dialog
*******************
************************
`Database Dialog`:index:
************************
Use the *Database* dialog to define or modify a database. To create a database, you must be a database superuser or have the CREATE privilege.
Use the *Database* dialog to define or modify a database. To create a database,
you must be a database superuser or have the CREATE privilege.
The *Database* dialog organizes the development of a database through the following dialog tabs: *General*, *Definition*, *Security*, and *Parameters*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Database* dialog organizes the development of a database through the
following dialog tabs: *General*, *Definition*, *Security*, and *Parameters*.
The *SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/database_general.png
:alt: Database dialog general tab
:align: center
Use the fields in the *General* tab to identify the database:
* Use the *Database* field to add a descriptive name for the database. The name will be displayed in the *pgAdmin* tree control.
* Select the owner of the database from the drop-down listbox in the *Owner* field.
* Store notes about the database in the *Comment* field.
* Use the *Database* field to add a descriptive name for the database. The name
will be displayed in the *pgAdmin* tree control.
* Select the owner of the database from the drop-down listbox in the *Owner*
field.
* Store notes about the database in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/database_definition.png
:alt: Database dialog definition tab
:align: center
Use the *Definition* tab to set properties for the database:
* Select a character set from the drop-down listbox in the *Encoding* field. The default is *UTF8*.
* Select a template from the drop-down listbox in the *Template* field. If you do not specify a template, the database will use template1.
* Select a tablespace from the drop-down listbox in the *Tablespace* field. The selected tablespace will be the default tablespace used to contain database objects.
* Select a character set from the drop-down listbox in the *Encoding* field.
The default is *UTF8*.
* Select a template from the drop-down listbox in the *Template* field. If you
do not specify a template, the database will use template1.
* Select a tablespace from the drop-down listbox in the *Tablespace* field. The
selected tablespace will be the default tablespace used to contain database
objects.
* Select the collation order from the drop-down listbox in the *Collation* field.
* Select the character classification from the drop-down listbox in the *Character Type* field. This affects the categorization of characters, e.g. lower, upper and digit. The default, or a blank field, uses the character classification of the template database.
* Specify a connection limit in the *Connection Limit* field to configure the maximum number of connection requests. The default value (*-1*) allows unlimited connections to the database.
* Select the character classification from the drop-down listbox in the
*Character Type* field. This affects the categorization of characters, e.g.
lower, upper and digit. The default, or a blank field, uses the character
classification of the template database.
* Specify a connection limit in the *Connection Limit* field to configure the
maximum number of connection requests. The default value (*-1*) allows
unlimited connections to the database.
Click the *Security* tab to continue.
.. image:: images/database_security.png
:alt: Database dialog security tab
:align: center
Use the *Security* tab to assign privileges and define security labels.
Use the *Security* tab to assign privileges and define security labels.
Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon (+) to set privileges for database objects:
Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon
(+) to set privileges for database objects:
* Select the name of the role from the drop-down listbox in the *Grantee* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user.
* Select the name of the role from the drop-down listbox in the *Grantor* field. The default grantor is the owner of the database.
* Click inside the *Privileges* field. Check the boxes to the left of one or
more privileges to grant the selected privilege to the specified user.
* Select the name of the role from the drop-down listbox in the *Grantor* field.
The default grantor is the owner of the database.
Click add to set additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click add to set additional privileges; to discard a privilege, click the trash
icon to the left of the row and confirm deletion in the *Delete Row* popup.
Use the *Security Labels* panel to define security labels applied to the database. Click the *Add* icon (+) to add each security label selection:
Use the *Security Labels* panel to define security labels applied to the
database. Click the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them.
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
To discard a security label, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
To discard a security label, click the trash icon to the left of the row and
confirm deletion in the *Delete Row* popup.
Click the *Parameters* tab to continue.
.. image:: images/database_parameters.png
:alt: Database dialog parameters tab
:align: center
Use the *Parameters* tab to set parameters for the database. Click the *Add* icon (+) to add each parameter:
Use the *Parameters* tab to set parameters for the database. Click the *Add*
icon (+) to add each parameter:
* Use the drop-down listbox in the *Name* field to select a parameter.
* Use the *Value* field to set a value for the parameter.
* Use the drop-down listbox next to *Role* to select a role to which the parameter setting specified will apply.
* Use the drop-down listbox next to *Role* to select a role to which the
parameter setting specified will apply.
Follow these steps to add additional parameter value definitions; to discard a parameter, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Follow these steps to add additional parameter value definitions; to discard a
parameter, click the trash icon to the left of the row and confirm deletion in
the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Database* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Database* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Database* dialog:
The following is an example of the sql command generated by user selections in
the *Database* dialog:
.. image:: images/database_sql.png
:alt: Database dialog sql tab
:align: center
The example creates a database named *hr* that is owned by *postgres*. It allows unlimited connections, and is available to all authenticated users.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example creates a database named *hr* that is owned by *postgres*. It
allows unlimited connections, and is available to all authenticated users.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+92 -30
View File
@@ -1,37 +1,66 @@
.. _debugger:
*************************
`pgAdmin Debugger`:index:
*************************
*****************
`Debugger`:index:
*****************
.. image:: images/debug_main.png
:alt: Debugger page
:align: center
The debugger may be used to debug PL/pgSQL functions in PostgreSQL, as well as EDB-SPL functions, stored procedures and packages in Advanced Server. The Debugger is available as an extension for your PostgreSQL installation, and is distributed as part of Advanced Server. You must have superuser privileges to use the debugger.
The debugger may be used to debug PL/pgSQL functions in PostgreSQL, as well as
EDB-SPL functions, stored procedures and packages in EDB Postgres Advanced
Server. The Debugger is available as an extension for your PostgreSQL
installation, and is distributed as part of Advanced Server. You must have
superuser privileges to use the debugger.
Before using the debugger, you must modify the *postgresql.conf* file, adding the server-side debugger components to the the value of the *shared_preload_libraries* parameter:
Before using the debugger, you must modify the *postgresql.conf* file, adding
the server-side debugger components to the the value of the
*shared_preload_libraries* parameter:
shared_preload_libraries = '$libdir/*other_libraries*/plugin_debugger'
After modifying the *shared_preload_libraries* parameter, restart the server to apply the changes.
The debugger may be used for either in-context debugging or direct debugging of a target function or procedure. When you use the debugger for in-context debugging, you set a breakpoint at the first line of a program; when a session invokes the target, control is transferred to the debugger. When using direct debugging, the debugger prompts you for any parameters required by the target, and then allows you to step through the code.
After modifying the *shared_preload_libraries* parameter, restart the server to
apply the changes.
**In-context Debugging**
The debugger may be used for either in-context debugging or direct debugging of
a target function or procedure. When you use the debugger for in-context
debugging, you set a breakpoint at the first line of a program; when a session
invokes the target, control is transferred to the debugger. When using direct
debugging, the debugger prompts you for any parameters required by the target,
and then allows you to step through the code.
To set a breakpoint at the first line of a program, right-click the name of the object you would like to debug, and select *Set breakpoint* from the *Debugging* sub-menu. The debugger window will open, waiting for another session to invoke the program.
In-context Debugging
********************
To set a breakpoint at the first line of a program, right-click the name of the
object you would like to debug, and select *Set breakpoint* from the *Debugging*
sub-menu. The debugger window will open, waiting for another session to invoke
the program.
.. image:: images/debug_set_breakpoint.png
:alt: Debugger set a breakpoint demo
:align: center
When another session invokes the target, the debugger will display the code, allowing you to add break points, or step through line-by-line. The other session is suspended until the debugging completes; then control is returned to the session.
When another session invokes the target, the debugger will display the code,
allowing you to add break points, or step through line-by-line. The other
session is suspended until the debugging completes; then control is returned
to the session.
.. image:: images/debug_ic_step_in.png
:alt: Debugger step-in demo
:align: center
Direct Debugging
****************
**Direct Debugging**
To use the debugger for direct debugging, right click on the name of the object that you wish to debug in the pgAdmin tree control and select *Debug* from the *Debugging* sub-menu. The debugger window will open, prompting you for any values required by the program:
To use the debugger for direct debugging, right click on the name of the object
that you wish to debug in the pgAdmin tree control and select *Debug* from the
*Debugging* sub-menu. The debugger window will open, prompting you for any
values required by the program:
.. image:: images/debug_params.png
:alt: Debugger parameter dialog
Use the fields on the *Debugger* dialog to provide a value for each parameter:
@@ -39,20 +68,35 @@ Use the fields on the *Debugger* dialog to provide a value for each parameter:
* The *Type* field contains the parameter data type.
* Check the *Null?* checkbox to indicate that the parameter is a NULL value.
* Check the *Expression?* checkbox if the Value field contains an expression.
* Use the *Value* field to provide the parameter value that will be passed to the program. When entering parameter values, type the value into the appropriate cell on the grid, or, leave the cell empty to represent NULL, enter '' (two single quotes) to represent an empty string, or to enter a literal string consisting of just two single quotes, enter \'\'. PostgreSQL 8.4 and above supports variadic function parameters. These may be entered as a comma-delimited list of values, quoted and/or cast as required.
* Check the *Use default?* checkbox to indicate that the program should use the value in the Default Value field.
* The *Default Value* field contains the default value of the parameter.
* Use the *Value* field to provide the parameter value that will be passed to
the program. When entering parameter values, type the value into the
appropriate cell on the grid, or, leave the cell empty to represent NULL,
enter '' (two single quotes) to represent an empty string, or to enter a
literal string consisting of just two single quotes, enter \'\'. PostgreSQL
8.4 and above supports variadic function parameters. These may be entered as
a comma-delimited list of values, quoted and/or cast as required.
* Check the *Use default?* checkbox to indicate that the program should use
the value in the Default Value field.
* The *Default Value* field contains the default value of the parameter.
Provide values required by the program, and click the *Debug* button to start stepping through the program.
Provide values required by the program, and click the *Debug* button to start
stepping through the program.
.. image:: images/debug_step_in.png
:alt: Debugger step-in demo
:align: center
Using the Debugger
******************
**Using the Debugger**
The main debugger window consists of two panels and a context-sensitive toolbar. Use toolbar icons to manage breakpoints and step into or through code; hover over an icon for a tooltip that identifies the option associated with the icon. The toolbar options are:
The main debugger window consists of two panels and a context-sensitive toolbar.
Use toolbar icons to manage breakpoints and step into or through code; hover
over an icon for a tooltip that identifies the option associated with the icon.
The toolbar options are:
.. image:: images/debug_toolbar.png
:alt: Debugger navigation toolbar
:align: center
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| Option | Action |
@@ -72,29 +116,47 @@ The main debugger window consists of two panels and a context-sensitive toolbar.
| *Stop* | Click the *Stop* icon to halt the execution of a program. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
The top panel of the debugger window displays the program body; click in the grey margin next to a line number to add a breakpoint. The highlighted line in the top panel is the line that is about to execute.
The top panel of the debugger window displays the program body; click in the
grey margin next to a line number to add a breakpoint. The highlighted line in
the top panel is the line that is about to execute.
.. image:: images/debug_main.png
:alt: Debugger main window
:align: center
The lower panel of the debugger window provides a set of tabs that allow you to review information about the program:
The lower panel of the debugger window provides a set of tabs that allow you to
review information about the program:
* The *Parameters* tab displays the value of each parameter.
* The *Local* variables tab displays the current value of the program variables.
* The *Messages* tab displays any messages returned by the server (errors, warnings and informational messages).
* The *Messages* tab displays any messages returned by the server (errors,
warnings and informational messages).
* The *Results* tab displays the server message when the program completes.
* The *Stack* tab displays the list of functions that have been invoked, but which have not yet completed.
* The *Stack* tab displays the list of functions that have been invoked, but
which have not yet completed.
As you step through a program, the *Local variables* tab displays the current value of each variable:
As you step through a program, the *Local variables* tab displays the current
value of each variable:
.. image:: images/debug_variables.png
:alt: Debugger local variables tab
:align: center
When you step into a subroutine, the *Stack* tab displays the call stack, including the name of each caller, the parameter values for each caller (if any), and the line number within each caller:
When you step into a subroutine, the *Stack* tab displays the call stack,
including the name of each caller, the parameter values for each caller (if
any), and the line number within each caller:
.. image:: images/debug_stack.png
:alt: Debugger local stack tab
:align: center
Select a caller to change focus to that stack frame and display the state of the caller in the upper panel.
Select a caller to change focus to that stack frame and display the state of
the caller in the upper panel.
When the program completes, the *Results* tab displays the message returned by the server. If the program encounters an error, the *Messages* tab displays details:
When the program completes, the *Results* tab displays the message returned by
the server. If the program encounters an error, the *Messages* tab displays
details:
.. image:: images/debug_error_message.png
:alt: Debugger error message
:align: center
+10 -7
View File
@@ -1,15 +1,18 @@
.. _deployment:
******************
pgAdmin Deployment
******************
*******************
`Deployment`:index:
*******************
Pre-compiled and configured installation packages for pgAdmin 4 are available for a number of desktop environments; we recommend using an installer whenever possible. If you are interested in learning more about the project, or if a pgAdmin installer is not available for your environment, the pages listed below will provide detailed information about creating a custom deployment.
Contents:
Pre-compiled and configured installation packages for pgAdmin 4 are available
for a number of desktop environments; we recommend using an installer whenever
possible. If you are interested in learning more about the project, or if a
pgAdmin installer is not available for your environment, the pages listed below
will provide detailed information about creating a custom deployment.
.. toctree::
:maxdepth: 2
desktop_deployment
server_deployment
server_deployment
container_deployment
+58 -42
View File
@@ -1,27 +1,43 @@
.. _desktop_deployment:
******************
Desktop Deployment
******************
***************************
`Desktop Deployment`:index:
***************************
pgAdmin may be deployed as a desktop application by configuring the application
to run in desktop mode and then utilising the desktop runtime to host and
display the program on a supported Windows, Mac OS X or Linux installation.
to run in desktop mode and then utilising the desktop runtime to host the
program on a supported Windows, Mac OS X or Linux installation.
**Note: Pre-compiled and configured installation packages are available for
a number of platforms. These packages should be used by end-users whereever
possible - the following information is useful for the maintainers of those
packages and users interested in understanding how pgAdmin works.**
The desktop runtime is a system-tray application that when launched, runs the
pgAdmin server and launches a web browser to render the user interface. If
additional instances of pgAdmin are launched, a new browser tab will be opened
and be served by the existing instance of the server in order to minimise system
resource utilisation. Clicking the icon in the system tray will present a menu
offering options to open a new pgAdmin window, configure the runtime, view the
server log and shut down the server.
.. note:: Pre-compiled and configured installation packages are available for
a number of platforms. These packages should be used by end-users whereever
possible - the following information is useful for the maintainers of those
packages and users interested in understanding how pgAdmin works.
.. seealso:: For detailed instructions on building and configuring pgAdmin from
scratch, please see the README file in the top level directory of the source code.
For convenience, you can find the latest version of the file
`here <https://git.postgresql.org/gitweb/?p=pgadmin4.git;a=blob_plain;f=README>`_,
but be aware that this may differ from the version included with the source code
for a specific version of pgAdmin.
Configuration
*************
In order to configure pgAdmin to run in desktop mode, it is first necessary to
configure the Python code to run in single-user mode, and then to configure the
runtime to find and execute the code.
From pgAdmin 4 v2 onwards, the default configuration mode is server, however,
this is overridden by the desktop runtime at startup. In most environments, no
Python configuration is required unless you wish to override other default
settings.
Note that there are multiple configuration files that are read at startup by
pgAdmin. These are as follows:
There are multiple configuration files that are read at startup by pgAdmin. These
are as follows:
* ``config.py``: This is the main configuration file, and should not be modified.
It can be used as a reference for configuration settings, that may be overridden
@@ -35,31 +51,11 @@ pgAdmin. These are as follows:
for end users to change any default or packaging specific settings that they may
wish to adjust to meet local preferences or standards.
Python
------
.. note:: If the SERVER_MODE setting is changed in ``config_distro.py`` or ``config_local.py``,
you will most likely need to re-set the LOG_FILE, SQLITE_PATH, SESSION_DB_PATH
and STORAGE_DIR values as well as they will have been set based on the default
configuration or overridden by the runtime.
In order to configure the Python code, follow these steps:
1. Ensure that any existing configuration database (``pgadmin4.db``) is moved
out of the way in the ``web/`` directory containing the pgAdmin Python code.
2. Create a ``config_local.py`` file alongside the existing ``config.py`` file.
3. Edit ``config_local.py`` and add the following setting:
.. code-block:: python
SERVER_MODE = False
4. Run the following command to create the configuration database:
.. code-block:: bash
$ python setup.py
Alternatively, you can simply run ``pgAdmin4.py`` at this point or aat a later time,
and ``pgadmin4.db`` will be created automatically at first run.
Runtime
-------
@@ -72,7 +68,27 @@ semi-colon character, for example:
.. code-block:: bash
/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/;/Users/dpage/python-libs/
The configuration settings are stored using the QSettings class in Qt, which
will use an INI file on Unix systems, a plist file on Mac OS X, and the registry
on Windows. The Python Path setting is stored in the ``PythonPath`` key.
The configuration settings are stored using the QSettings class in Qt, which
will use an INI file on Unix systems (~/.config/pgadmin/pgadmin4.conf),
a plist file on Mac OS X (~/Library/Preferences/org.pgadmin.pgadmin4.plist),
and the registry on Windows (HKEY_CURRENT_USER\\Software\\pgadmin\\pgadmin4).
The configuration settings:
.. table::
:class: longtable
:widths: 2 1 4
+--------------------------+--------------------+---------------------------------------------------------------+
| Key | Type | Purpose |
+==========================+====================+===============================================================+
| ApplicationPath | String | The directory containing pgAdmin4.py |
+--------------------------+--------------------+---------------------------------------------------------------+
| BrowserCommand | String | An alternate command to run instead of the default browser. |
+--------------------------+--------------------+---------------------------------------------------------------+
| ConnectionTimeout | Integer | The number of seconds to wait for application server startup. |
+--------------------------+--------------------+---------------------------------------------------------------+
| PythonPath | String | The Python module search path |
+--------------------------+--------------------+---------------------------------------------------------------+
+9 -7
View File
@@ -1,14 +1,16 @@
.. _developer_tools:
***************
Developer Tools
***************
************************
`Developer Tools`:index:
************************
The pgAdmin *Tools* menu displays a list of powerful developer tools that you can use to execute and analyze complex SQL commands, manage data, and debug PL/SQL code.
Contents:
The pgAdmin *Tools* menu displays a list of powerful developer tools that you
can use to execute and analyze complex SQL commands, manage data, and debug
PL/SQL code.
.. toctree::
:maxdepth: 2
debugger
query_tool
editgrid
+42 -17
View File
@@ -1,45 +1,70 @@
.. _domain_constraint_dialog:
*****************************
The Domain Constraints Dialog
*****************************
**********************************
`Domain Constraints Dialog`:index:
**********************************
Use the *Domain Constraints* dialog to create or modify a domain constraint. A domain constraint confirms that the values provided for a domain meet a defined criteria. The *Domain Constraints* dialog implements options of the ALTER DOMAIN command.
Use the *Domain Constraints* dialog to create or modify a domain constraint. A
domain constraint confirms that the values provided for a domain meet a defined
criteria. The *Domain Constraints* dialog implements options of the ALTER DOMAIN
command.
The *Domain Constraints* dialog organizes the development of a domain constraint through the following dialog tabs: *General* and *Definition*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Domain Constraints* dialog organizes the development of a domain constraint
through the following dialog tabs: *General* and *Definition*. The *SQL* tab
displays the SQL code generated by dialog selections.
.. image:: images/domain_constraint_general.png
:alt: Domain constraint dialog general tab
:align: center
Use the fields in the *General* tab to identify the domain constraint:
* Use the *Name* field to add a descriptive name for the constraint. The name will be displayed in the *pgAdmin* tree control.
* Use the *Name* field to add a descriptive name for the constraint. The name
will be displayed in the *pgAdmin* tree control.
* Store notes about the constraint in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/domain_constraint_definition.png
:alt: Domain constraint dialog general tab
:align: center
Use the fields in the *Definition* tab to define the domain constraint:
* Use the *Check* field to provide a CHECK expression. A CHECK expression specifies a constraint that the domain must satisfy. A constraint must produce a Boolean result; include the key word VALUE to refer to the value being tested. Only those expressions that evaluate to TRUE or UNKNOWN will succeed. A CHECK expression cannot contain subqueries or refer to variables other than VALUE. If a domain has multiple CHECK constraints, they will be tested in alphabetical order.
* Move the *Validate?* switch to the *No* position to mark the constraint NOT VALID. If the constraint is marked NOT VALID, the constraint will not be applied to existing column data. The default value is *Yes*.
* Use the *Check* field to provide a CHECK expression. A CHECK expression
specifies a constraint that the domain must satisfy. A constraint must produce
a Boolean result; include the key word VALUE to refer to the value being
tested. Only those expressions that evaluate to TRUE or UNKNOWN will succeed.
A CHECK expression cannot contain subqueries or refer to variables other than
VALUE. If a domain has multiple CHECK constraints, they will be tested in
alphabetical order.
* Move the *Validate?* switch to the *No* position to mark the constraint NOT
VALID. If the constraint is marked NOT VALID, the constraint will not be
applied to existing column data. The default value is *Yes*.
Click the *SQL* tab to continue.
Your entries in the *Domain Constraints* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Domain Constraints* dialog generate a SQL command (see an
example below). Use the *SQL* tab for review; revisit or switch tabs to make any
changes to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Domain Constraints* dialog:
The following is an example of the sql command generated by user selections in
the *Domain Constraints* dialog:
.. image:: images/domain_constraint_sql.png
:alt: Domain constraint dialog general tab
:align: center
The example shown demonstrates creating a domain constraint on the domain *timesheets* named *weekday*. It constrains a value to equal *Friday*.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example shown demonstrates creating a domain constraint on the domain
*timesheets* named *weekday*. It constrains a value to equal *Friday*.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+77 -27
View File
@@ -1,73 +1,123 @@
.. _domain_dialog:
*****************
The Domain Dialog
*****************
**********************
`Domain Dialog`:index:
**********************
Use the *Domain* dialog to define a domain. A domain is a data type definition that may constrain permissible values. Domains are useful when you are creating multiple tables that contain comparable columns; you can create a domain that defines constraints that are common to the columns and re-use the domain definition when creating the columns, rather than individually defining each set of constraints.
Use the *Domain* dialog to define a domain. A domain is a data type definition
that may constrain permissible values. Domains are useful when you are creating
multiple tables that contain comparable columns; you can create a domain that
defines constraints that are common to the columns and re-use the domain
definition when creating the columns, rather than individually defining each
set of constraints.
The *Domain* dialog organizes the development of a domain through the following tabs: *General*, *Definition*, *Constraints*, and *Security*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Domain* dialog organizes the development of a domain through the following
tabs: *General*, *Definition*, *Constraints*, and *Security*. The *SQL* tab
displays the SQL code generated by dialog selections.
.. image:: images/domain_general.png
:alt: Domain dialog general tab
:align: center
Use the fields on the *General* tab to identify a domain:
* Use the *Name* field to add a descriptive name for the domain. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select a role that will own the domain.
* Select the name of the schema in which the domain will reside from the drop-down listbox in the *Schema* field.
* Use the *Name* field to add a descriptive name for the domain. The name will
be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select a role that will own the
domain.
* Select the name of the schema in which the domain will reside from the
drop-down listbox in the *Schema* field.
* Store notes about the domain in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/domain_definition.png
:alt: Domain dialog definition tab
:align: center
Use the fields in the *Definition* tab to describe the domain:
* Use the drop-down listbox next to *Base type* to specify a data type.
* Use the context-sensitive *Length* field to specify a numeric length for a numeric type.
* Use the context-sensitive *Precision* field to specify the total count of significant digits for a numeric type.
* Specify a default value for the domain data type in the *Default* field. The data type of the default expression must match the data type of the domain. If no default value is specified, then the default value is the null value.
* Move the *Not Null* switch to specify the values of this domain are prevented from being null.
* Use the drop-down listbox next to *Collation* to apply a collation cast. If no collation is specified, the underlying data type's default collation is used. The underlying type must be collatable if COLLATE is specified.
* Use the context-sensitive *Length* field to specify a numeric length for a
numeric type.
* Use the context-sensitive *Precision* field to specify the total count of
significant digits for a numeric type.
* Specify a default value for the domain data type in the *Default* field. The
data type of the default expression must match the data type of the domain. If
no default value is specified, then the default value is the null value.
* Move the *Not Null* switch to specify the values of this domain are prevented
from being null.
* Use the drop-down listbox next to *Collation* to apply a collation cast. If
no collation is specified, the underlying data type's default collation is
used. The underlying type must be collatable if COLLATE is specified.
Click the *Constraints* tab to continue.
.. image:: images/domain_constraints.png
:alt: Domain dialog constraints tab
:align: center
Use the fields in the *Constraints* tab to specify rules for the domain. Click the *Add* icon (+) to set constraints:
Use the fields in the *Constraints* tab to specify rules for the domain. Click
the *Add* icon (+) to set constraints:
* Use the *Name* field to specify a name for the constraint.
* Use the *Check* field to provide an expression for the constraint.
* Use the *Validate* checkbox to determine whether the constraint will be validated. The default checkbox is checked and sets a validation requirement.
* Use the *Validate* checkbox to determine whether the constraint will be
validated. The default checkbox is checked and sets a validation requirement.
A CHECK clause specifies an integrity test which values of the domain must satisfy. Each constraint must be an expression that produces a Boolean result. Use the key word VALUE to refer to the value being tested. Expressions evaluating to TRUE or UNKNOWN succeed. If the expression produces a FALSE result, an error is reported and the value is not allowed to be converted to the domain type. A CHECK expression cannot contain subqueries nor refer to variables other than VALUE. If a domain has multiple CHECK constraints, they will be tested in alphabetical order by name.
A CHECK clause specifies an integrity test which values of the domain must
satisfy. Each constraint must be an expression that produces a Boolean result.
Use the key word VALUE to refer to the value being tested. Expressions
evaluating to TRUE or UNKNOWN succeed. If the expression produces a FALSE
result, an error is reported and the value is not allowed to be converted to
the domain type. A CHECK expression cannot contain subqueries nor refer to
variables other than VALUE. If a domain has multiple CHECK constraints, they
will be tested in alphabetical order by name.
Click the *Add* icon (+) to set additional constraints; to discard a constraint, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to set additional constraints; to discard a constraint,
click the trash icon to the left of the row and confirm deletion in the *Delete
Row* popup.
Click the *Security* tab to continue.
.. image:: images/domain_security.png
:alt: Domain dialog security tab
:align: center
Use the *Security Labels* panel to assign security labels. Click the *Add* icon (+) to add a label:
Use the *Security Labels* panel to assign security labels. Click the *Add* icon
(+) to add a label:
* Specify a security label provider in the *Provider* field. The named provider must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them.
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
Click the *Add* icon (+) to specify each additional label; to discard a label, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to specify each additional label; to discard a label,
click the trash icon to the left of the row and confirm deletion in the *Delete
Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Domain* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Domain* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by selections made in the *Domain* dialog:
The following is an example of the sql command generated by selections made in
the *Domain* dialog:
.. image:: images/domain_sql.png
:alt: Domain dialog sql tab
:align: center
The example shown demonstrates creating a domain named *minimum-wage* that confirms that the value entered is greater than or equal to *7.25*.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example shown demonstrates creating a domain named *minimum-wage* that
confirms that the value entered is greater than or equal to *7.25*.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+140
View File
@@ -0,0 +1,140 @@
.. _editgrid:
***********************
`View/Edit Data`:index:
***********************
To view or modify data, right click on a table or view name in the *Browser*
tree control. When the context menu opens, use the *View/Edit Data* menu to
specify the number of rows you would like to display in the editor panel.
.. image:: images/editgrid.png
:alt: Edit grid window
:align: center
To modify the content of a table, each row in the table must be uniquely
identifiable. If the table definition does not include an OID or a primary key,
the displayed data is read only. Note that views cannot be edited; updatable
views (using rules) are not supported.
The editor features a toolbar that allows quick access to frequently used
options, and a work environment divided into two panels:
* The upper panel displays the SQL command that was used to select the content
displayed in the lower panel.
* The lower panel (the Data Grid) displays the data selected from the table or
view.
The View/Edit Data Toolbar
**************************
The :ref:`Query Tool <query_tool>` and :ref:`View/Edit Data <editgrid>` tools
are actually different operating modes of the same tool. Some controls will be
disabled in either mode. Please see
:ref:`The Query Tool Toolbar <query_tool_toolbar>` for a description of the
available controls.
The Data Grid
*************
The top row of the data grid displays the name of each column, the data type,
and if applicable, the number of characters allowed. A column that is part of
the primary key will additionally be marked with [PK].
To modify the displayed data:
* To change a numeric value within the grid, double-click the value to select
the field. Modify the content in the square in which it is displayed.
* To change a non-numeric value within the grid, double-click the content to
access the edit bubble. After modifying the contentof the edit bubble, click
the *Save* button to display your changes in the data grid, or *Cancel* to
exit the edit bubble without saving.
To enter a newline character, click Ctrl-Enter or Shift-Enter. Newline
formatting is only displayed when the field content is accessed via an edit
bubble.
To add a new row to the table, enter data into the last (unnumbered) row of the
table. As soon as you store the data, the row is assigned a row number, and a
fresh empty line is added to the data grid.
To write a SQL NULL to the table, simply leave the field empty. When you store
the new row, the will server fill in the default value for that column. If you
store a change to an existing row, the value NULL will explicitly be written.
To write an empty string to the table, enter the special string '' (two single
quotes) in the field. If you want to write a string containing solely two single
quotes to the table, you need to escape these quotes, by typing \'\'
To delete a row, press the *Delete* toolbar button. A popup will open, asking
you to confirm the deletion.
To commit the changes to the server, select the *Save* toolbar button.
Modifications to a row are written to the server automatically when you select
a different row.
**Geometry Data Viewer**
If PostGIS is installed, you can view GIS objects in a map by selecting row(s)
and clicking the 'View Geometry' button in the column. If no rows are selected,
the entire data set will be rendered:
.. image:: images/geometry_viewer.png
:alt: Geometry Viewer Button
:align: center
You can adjust the layout by dragging the title of the panel. To view the
properties of the geometries directly in map, just click the specific geometry:
.. image:: images/geometry_viewer_property_table.png
:alt: Geometry Viewer Property Table
:align: center
.. note::
- *Supported data types:* The Geometry Viewer supports 2D and 3DM geometries in
EWKB format including `Point, LineString, Polygon MultiPoint, MultiLineString,
MultiPolygon and GeometryCollection`.
- *SRIDs:* If there are geometries with different SRIDs in the same column, the
viewer will render geometries with the same SRID in the map. If SRID=4326 the
OSM tile layer will be added into the map.
- *Data size:* For performance reasons, the viewer will render no more than
100000 geometries, totaling up to 20MB.
- *Internet access:* An internet connection is required for the Geometry Viewer
to function correctly.
Sort/Filter options dialog
**************************
You can access *Sort/Filter options dialog* by clicking on Sort/Filter button.
This allows you to specify an SQL Filter to limit the data displayed and data
sorting options in the edit grid window:
.. image:: images/editgrid_filter_dialog.png
:alt: Edit grid filter dialog window
:align: center
* Use *SQL Filter* to provide SQL filtering criteria. These will be added to
the "WHERE" clause of the query used to retrieve the data. For example,
you might enter:
.. code-block:: sql
id > 25 AND created > '2018-01-01'
* Use *Data Sorting* to sort the data in the output grid
To add new column(s) in data sorting grid, click on the [+] icon.
* Use the drop-down *Column* to select the column you want to sort.
* Use the drop-down *Order* to select the sort order for the column.
To delete a row from the grid, click the trash icon.
* Click the *Help* button (?) to access online help.
* Click the *Ok* button to save work.
* Click the *Close* button to discard current changes and close the dialog.
+57 -23
View File
@@ -1,56 +1,90 @@
.. _event_trigger_dialog:
************************
The Event Trigger Dialog
************************
Use the *Domain Trigger* dialog to define an event trigger. Unlike regular triggers, which are attached to a single table and capture only DML events, event triggers are global to a particular database and are capable of capturing DDL events. Like regular triggers, event triggers can be written in any procedural language that includes event trigger support, or in C, but not in SQL.
*****************************
`Event Trigger Dialog`:index:
*****************************
The *Domain Trigger* dialog organizes the development of a event trigger through the following dialog tabs: *General*, *Definition*, and *Security Labels*. The *SQL* tab displays the SQL code generated by dialog selections.
Use the *Domain Trigger* dialog to define an event trigger. Unlike regular
triggers, which are attached to a single table and capture only DML events,
event triggers are global to a particular database and are capable of capturing
DDL events. Like regular triggers, event triggers can be written in any
procedural language that includes event trigger support, or in C, but not in
SQL.
The *Domain Trigger* dialog organizes the development of a event trigger through
the following dialog tabs: *General*, *Definition*, and *Security Labels*. The
*SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/event_trigger_general.png
:alt: Event trigger dialog general tab
:align: center
Use the fields in the *General* tab to identify the event trigger:
* Use the *Name* field to add a descriptive name for the event trigger. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to specify the owner of the event trigger.
* Use the *Name* field to add a descriptive name for the event trigger. The name
will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to specify the owner of the event
trigger.
* Store notes about the event trigger in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/event_trigger_definition.png
:alt: Event trigger dialog definition tab
:align: center
Use the fields in the *Definition* tab to define the event trigger:
* Select a radio button in the *Enabled Status* field to specify a status for the trigger: *Enable* *Disable*, *Replica* *Always*.
* Use the drop-down listbox next to *Trigger function* to specify an existing function. A trigger function takes an empty argument list, and returns a value of type event_trigger.
* Select a radio button in the *Events* field to specify when the event trigger will fire: *DDL COMMAND START*, *DDL COMMAND END*, or *SQL DROP*.
* Use the *When* field to write a condition for the event trigger that must be satisfied before the event trigger can execute.
* Select a radio button in the *Enabled Status* field to specify a status for
the trigger: *Enable* *Disable*, *Replica* *Always*.
* Use the drop-down listbox next to *Trigger function* to specify an existing
function. A trigger function takes an empty argument list, and returns a
value of type event_trigger.
* Select a radio button in the *Events* field to specify when the event trigger
will fire: *DDL COMMAND START*, *DDL COMMAND END*, or *SQL DROP*.
* Use the *When* field to write a condition for the event trigger that must be
satisfied before the event trigger can execute.
Click the *Security Labels* tab to continue.
Click the *Security Labels* tab to continue.
.. image:: images/event_trigger_security.png
:alt: Event trigger dialog security tab
:align: center
Use the *Security* tab to define security labels applied to the trigger. Click the *Add* icon (+) to add each security label.
Use the *Security* tab to define security labels applied to the trigger. Click
the *Add* icon (+) to add each security label.
* Specify a security label provider in the *Provider* field. The named provider must be loaded and must consent to the proposed labeling operation.
* Specify a security label in the *Security Label* field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them.
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a security label in the *Security Label* field. The meaning of a given
label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
Click the *Add* icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to assign additional security labels; to discard a
security label, click the trash icon to the left of the row and confirm deletion
in the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Domain Trigger* dialog generate a generate a SQL command. Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Domain Trigger* dialog generate a generate a SQL command.
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Domain Trigger* dialog:
The following is an example of the sql command generated by user selections in
the *Domain Trigger* dialog:
.. image:: images/event_trigger_sql.png
:alt: Event trigger dialog sql tab
:align: center
The command creates an event trigger named *accounts* that invokes the procedure named *acct_due*.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The command creates an event trigger named *accounts* that invokes the procedure
named *acct_due*.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+70 -29
View File
@@ -1,63 +1,104 @@
.. _exclusion_constraint_dialog:
*******************************
The Exclusion constraint Dialog
*******************************
************************************
`Exclusion Constraint Dialog`:index:
************************************
Use the *Exclusion constraint* dialog to define or modify the behavior of an exclusion constraint. An exclusion constraint guarantees that if any two rows are compared on the specified column or expression (using the specified operator), at least one of the operator comparisons will return false or null.
Use the *Exclusion constraint* dialog to define or modify the behavior of an
exclusion constraint. An exclusion constraint guarantees that if any two rows
are compared on the specified column or expression (using the specified
operator), at least one of the operator comparisons will return false or null.
The *Exclusion constraint* dialog organizes the development of an exclusion
constraint through the following dialog tabs: *General*, *Definition*, and
*Columns*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Exclusion constraint* dialog organizes the development of an exclusion constraint through the following dialog tabs: *General*, *Definition*, and *Columns*. The *SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/exclusion_constraint_general.png
:alt: Exclusion constraint dialog general tab
:align: center
Use the fields in the *General* tab to identify the exclusion constraint:
* Use the *Name* field to provide a descriptive name for the exclusion constraint. The name will be displayed in the *pgAdmin* tree control.
* Use the *Name* field to provide a descriptive name for the exclusion
constraint. The name will be displayed in the *pgAdmin* tree control.
Click the *Definition* tab to continue.
.. image:: images/exclusion_constraint_definition.png
:alt: Exclusion constraint dialog definition tab
:align: center
Use the fields in the *Definition* tab to define the exclusion constraint:
* Use the drop-down listbox next to *Tablespace* to select the tablespace in which the index associated with the exclude constraint will reside.
* Use the drop-down listbox next to *Access method* to specify the type of index that will be used when implementing the exclusion constraint:
* Use the drop-down listbox next to *Tablespace* to select the tablespace in
which the index associated with the exclude constraint will reside.
* Use the drop-down listbox next to *Access method* to specify the type of
index that will be used when implementing the exclusion constraint:
* Select *gist* to specify a GiST index.
* Select *spgist* to specify a space-partitioned GiST index.
* Select *btree* to specify a B-tree index.
* Select *hash* to specify a hash index.
* Use the *Fill Factor* field to specify a fill factor for the table and associated index. The fill factor is a percentage between 10 and 100. 100 (complete packing) is the default.
* Move the *Deferrable?* switch to the *Yes* position to specify that the timing of the constraint is deferrable, and can be postponed until the end of the statement. The default is *No*.
* If enabled, move the *Deferred?* switch to the *Yes* position to specify the timing of the constraint is deferred to the end of the statement. The default is *No*.
* Use the *Constraint* field to provide a condition that a row must satisfy to be included in the table.
* Select *gist* to specify a GiST index.
* Select *spgist* to specify a space-partitioned GiST index.
* Select *btree* to specify a B-tree index.
* Select *hash* to specify a hash index.
* Use the *Fill Factor* field to specify a fill factor for the table and
associated index. The fill factor is a percentage between 10 and 100. 100
(complete packing) is the default.
* Move the *Deferrable?* switch to the *Yes* position to specify that the
timing of the constraint is deferrable, and can be postponed until the end of
the statement. The default is *No*.
* If enabled, move the *Deferred?* switch to the *Yes* position to specify the
timing of the constraint is deferred to the end of the statement. The default
is *No*.
* Use the *Constraint* field to provide a condition that a row must satisfy to
be included in the table.
Click the *Columns* tab to continue.
.. image:: images/exclusion_constraint_columns.png
:alt: Exclusion constraint dialog columns tab
:align: center
Use the fields in the *Columns* tab to to specify the column(s) to which the constraint applies. Use the drop-down listbox next to *Column* to select a column and click the *Add* icon (+) to provide details of the action on the column:
Use the fields in the *Columns* tab to to specify the column(s) to which the
constraint applies. Use the drop-down listbox next to *Column* to select a
column and click the *Add* icon (+) to provide details of the action on the
column:
* The *Column* field is populated with the selection made in the *Column* drop-down listbox.
* If applicable, use the drop-down listbox in the *Operator class* to specify the operator class that will be used by the index for the column.
* Move the *DESC* switch to *DESC* to specify a descending sort order. The default is *ASC* which specifies an ascending sort order.
* Use the *NULLs order* column to specify the placement of NULL values (when sorted). Specify *FIRST* or *LAST*.
* Use the drop-down list next to *Operator* to specify a comparison or conditional operator.
* The *Column* field is populated with the selection made in the *Column*
drop-down listbox.
* If applicable, use the drop-down listbox in the *Operator class* to specify
the operator class that will be used by the index for the column.
* Move the *DESC* switch to *DESC* to specify a descending sort order. The
default is *ASC* which specifies an ascending sort order.
* Use the *NULLs order* column to specify the placement of NULL values (when
sorted). Specify *FIRST* or *LAST*.
* Use the drop-down list next to *Operator* to specify a comparison or
conditional operator.
Use *Include columns* field to specify columns for *INCLUDE* clause of the
constraint. This option is available in Postgres 11 and later.
Click the *SQL* tab to continue.
Your entries in the *Exclusion Constraint* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Exclusion Constraint* dialog generate a SQL command (see
an example below). Use the *SQL* tab for review; revisit or switch tabs to make
any changes to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Exclusion Constraint* dialog:
The following is an example of the sql command generated by user selections in
the *Exclusion Constraint* dialog:
.. image:: images/exclusion_constraint_sql.png
:alt: Exclusion constraint dialog sql tab
:align: center
The example shown demonstrates creating an exclusion constraint named *exclude_department* that restricts additions to the dept table to those additions that are not equal to the value of the *deptno* column. The constraint uses a btree index.
The example shown demonstrates creating an exclusion constraint named
*exclude_department* that restricts additions to the dept table to those
additions that are not equal to the value of the *deptno* column. The
constraint uses a btree index.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+36 -15
View File
@@ -1,42 +1,63 @@
.. _extension_dialog:
********************
The Extension Dialog
********************
*************************
`Extension Dialog`:index:
*************************
Use the *Extension* dialog to install a new extension into the current database. An extension is a collection of SQL objects that add targeted functionality to your Postgres installation. The *Extension* dialog adds the functionality of an extension to the current database only; you must register the extension in each database that use the extension. Before you load an extension into a database, you should confirm that any pre-requisite files are installed.
Use the *Extension* dialog to install a new extension into the current database.
An extension is a collection of SQL objects that add targeted functionality to
your Postgres installation. The *Extension* dialog adds the functionality of
an extension to the current database only; you must register the extension in
each database that use the extension. Before you load an extension into a
database, you should confirm that any pre-requisite files are installed.
The *Extension* dialog allows you to implement options of the CREATE EXTENSION command through the following dialog tabs: *General* and *Definition*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Extension* dialog allows you to implement options of the CREATE EXTENSION
command through the following dialog tabs: *General* and *Definition*. The *SQL*
tab displays the SQL code generated by dialog selections.
.. image:: images/extension_general.png
:alt: Extension dialog general tab
:align: center
Use the fields in the *General* tab to identify an extension:
* Use the drop-down listbox in the *Name* field to select the extension. Each extension must have a unique name.
* Store notes about the extension in the *Comment* field.
* Use the drop-down listbox in the *Name* field to select the extension. Each
extension must have a unique name.
* Store notes about the extension in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/extension_definition.png
:alt: Extension dialog definition tab
:align: center
Use the *Definition* tab to select the *Schema* and *Version*:
* Use the drop-down listbox next to *Schema* to select the name of the schema in which to install the extension's objects.
* Use the drop-down listbox next to *Version* to select the version of the extension to install.
* Use the drop-down listbox next to *Schema* to select the name of the schema
in which to install the extension's objects.
* Use the drop-down listbox next to *Version* to select the version of the
extension to install.
Click the *SQL* tab to continue.
Your entries in the *Extension* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Extension* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Extension* dialog:
The following is an example of the sql command generated by user selections in
the *Extension* dialog:
.. image:: images/extension_sql.png
:alt: Extension dialog sql tab
:align: center
The command creates the *chkpass* extension in the *public* schema. It is version *1.0* of *chkpass*.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The command creates the *chkpass* extension in the *public* schema. It is
version *1.0* of *chkpass*.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+65 -23
View File
@@ -1,68 +1,110 @@
.. _foreign_data_wrapper_dialog:
*******************************
The Foreign Data Wrapper Dialog
*******************************
************************************
`Foreign Data Wrapper Dialog`:index:
************************************
Use the *Foreign Data Wrapper* dialog to create or modify a foreign data wrapper. A foreign data wrapper is an adapter between a Postgres database and data stored on another data source.
Use the *Foreign Data Wrapper* dialog to create or modify a foreign data
wrapper. A foreign data wrapper is an adapter between a Postgres database and
data stored on another data source.
You must be a superuser to create a foreign data wrapper.
The *Foreign Data Wrapper* dialog organizes the development of a foreign data wrapper through the following dialog tabs: *General*, *Definition*, *Options*, and *Security*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Foreign Data Wrapper* dialog organizes the development of a foreign data
wrapper through the following dialog tabs: *General*, *Definition*, *Options*,
and *Security*. The *SQL* tab displays the SQL code generated by dialog
selections.
.. image:: images/foreign_data_wrapper_general.png
:alt: Foreign data wrapper dialog general tab
:align: center
Use the fields in the *General* tab to identify the foreign data wrapper:
Use the fields in the *General* tab to identify the foreign data wrapper:
* Use the *Name* field to add a descriptive name for the foreign data wrapper. A foreign data wrapper name must be unique within the database. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the name of the role that will own the foreign data wrapper.
* Use the *Name* field to add a descriptive name for the foreign data wrapper.
A foreign data wrapper name must be unique within the database. The name will
be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the name of the role that
will own the foreign data wrapper.
* Store notes about the foreign data wrapper in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/foreign_data_wrapper_definition.png
:alt: Foreign data wrapper dialog definition tab
:align: center
Use the fields in the *Definition* tab to set parameters:
* Select the name of the handler function from the drop-down listbox in the *Handler* field. This is the name of an existing function that will be called to retrieve the execution functions for foreign tables.
* Select the name of the validator function from the drop-down listbox in the *Validator* field. This is the name of an existing function that will be called to check the generic options given to the foreign data wrapper, as well as options for foreign servers, user mappings and foreign tables using the foreign data wrapper.
* Select the name of the handler function from the drop-down listbox in the
*Handler* field. This is the name of an existing function that will be called
to retrieve the execution functions for foreign tables.
* Select the name of the validator function from the drop-down listbox in the
*Validator* field. This is the name of an existing function that will be
called to check the generic options given to the foreign data wrapper, as
well as options for foreign servers, user mappings and foreign tables using
the foreign data wrapper.
Click the *Options* tab to continue.
.. image:: images/foreign_data_wrapper_options.png
:alt: Foreign data wrapper dialog options tab
:align: center
Use the fields in the *Options* tab to specify options:
* Click the the *Add* icon (+) button to add an option/value pair for the foreign data wrapper. Supported option/value pairs will be specific to the selected foreign data wrapper.
* Specify the option name in the *Option* field and provide a corresponding value in the *Value* field.
* Click the the *Add* icon (+) button to add an option/value pair for the
foreign data wrapper. Supported option/value pairs will be specific to the
selected foreign data wrapper.
* Specify the option name in the *Option* field and provide a corresponding
value in the *Value* field.
Click the *Add* icon (+) to specify each additional pair; to discard an option, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to specify each additional pair; to discard an option,
click the trash icon to the left of the row and confirm deletion in the *Delete
Row* popup.
Click the *Security* tab to continue.
.. image:: images/foreign_data_wrapper_security.png
:alt: Foreign data wrapper dialog security tab
:align: center
Use the *Security* tab to assign security privileges. Click the *Add* icon (+) to assign a set of privileges.
Use the *Security* tab to assign security privileges. Click the *Add* icon (+)
to assign a set of privileges.
* Select the name of the role from the drop-down listbox in the *Grantee* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user.
* Select the name of the role granting the privileges from the drop-down listbox in the *Grantor* field. The default grantor is the owner of the foreign data wrapper.
* Click inside the *Privileges* field. Check the boxes to the left of one or
more privileges to grant the selected privileges to the specified user.
* Select the name of the role granting the privileges from the drop-down listbox
in the *Grantor* field. The default grantor is the owner of the foreign data
wrapper.
Click add to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click add to assign additional privileges; to discard a privilege, click the
trash icon to the left of the row and confirm deletion in the *Delete Row*
popup.
Click the *SQL* tab to continue.
Your entries in the *Foreign Data Wrapper* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Foreign Data Wrapper* dialog generate a SQL command (see an
example below). Use the *SQL* tab for review; revisit or switch tabs to make any
changes to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Foreign Data Wrapper* dialog:
The following is an example of the sql command generated by user selections in
the *Foreign Data Wrapper* dialog:
.. image:: images/foreign_data_wrapper_sql.png
:alt: Foreign data wrapper dialog sql tab
:align: center
The example creates a foreign data wrapper named *libpq_debug* that uses pre-existing validator and handler functions, *dblink_fdw_validator* and *libpg_fdw_handler*. Selections on the *Options* tab set *debug* equal to *true*. The foreign data wrapper is owned by *postgres*.
* Click the *Help* button (?) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example creates a foreign data wrapper named *libpq_debug* that uses
pre-existing validator and handler functions, *dblink_fdw_validator* and
*libpg_fdw_handler*. Selections on the *Options* tab set *debug* equal to
*true*. The foreign data wrapper is owned by *postgres*.
* Click the *Help* button (?) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+78 -30
View File
@@ -1,60 +1,100 @@
.. _foreign_key_dialog:
**********************
The Foreign key Dialog
**********************
***************************
`Foreign key Dialog`:index:
***************************
Use the *Foreign key* dialog to specify the behavior of a foreign key constraint. A foreign key constraint maintains referential integrity between two tables. A foreign key constraint cannot be defined between a temporary table and a permanent table.
Use the *Foreign key* dialog to specify the behavior of a foreign key
constraint. A foreign key constraint maintains referential integrity between
two tables. A foreign key constraint cannot be defined between a temporary
table and a permanent table.
The *Foreign key* dialog organizes the development of a foreign key constraint through the following dialog tabs: *General*, *Definition*, *Columns*, and *Action*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Foreign key* dialog organizes the development of a foreign key constraint
through the following dialog tabs: *General*, *Definition*, *Columns*, and
*Action*. The *SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/foreign_key_general.png
:alt: Foreign key dialog general tab
:align: center
Use the fields in the *General* tab to identify the foreign key constraint:
* Use the *Name* field to add a descriptive name for the foreign key. The name will be displayed in the *pgAdmin* tree control.
* Use the *Name* field to add a descriptive name for the foreign key. The name
will be displayed in the *pgAdmin* tree control.
* Store notes about the foreign key constraint in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/foreign_key_definition.png
:alt: Foreign key dialog definition tab
:align: center
Use the fields in the *Definition* tab to define the foreign key constraint:
* Move the *Deferrable?* switch to the *Yes* position to specify the timing of the constraint is deferrable and can be postponed until the end of the statement. The default is *No*.
* If enabled, move the *Deferred?* switch to the *Yes* position to specify the timing of the constraint is deferred to the end of the statement. The default is *No*.
* Move the *Match type* switch specify the type of matching that is enforced by the constraint:
* Move the *Deferrable?* switch to the *Yes* position to specify the timing of
the constraint is deferrable and can be postponed until the end of the
statement. The default is *No*.
* If enabled, move the *Deferred?* switch to the *Yes* position to specify the
timing of the constraint is deferred to the end of the statement. The default
is *No*.
* Move the *Match type* switch specify the type of matching that is enforced by
the constraint:
* Select *Full* to indicate that all columns of a multicolumn foreign key must be null if any column is null; if all columns are null, the row is not required to have a match in the referenced table.
* Select *Simple* to specify that a single foreign key column may be null; if any column is null, the row is not required to have a match in the referenced table.
* Move the *Validated* switch to the *Yes* position to instruct the server to validate the existing table content (against a foreign key or check constraint) when you save modifications to this dialog.
* Move the *Auto FK Index* switch to the *No* position to disable the automatic index feature.
* The field next to *Covering Index* generates the name of an index if the *Auto FK Index* switch is in the *Yes* position; or, this field is disabled.
* Select *Full* to indicate that all columns of a multicolumn foreign key
must be null if any column is null; if all columns are null, the row is
not required to have a match in the referenced table.
* Select *Simple* to specify that a single foreign key column may be null;
if any column is null, the row is not required to have a match in the
referenced table.
* Move the *Validated* switch to the *Yes* position to instruct the server to
validate the existing table content (against a foreign key or check
constraint) when you save modifications to this dialog.
* Move the *Auto FK Index* switch to the *No* position to disable the automatic
index feature.
* The field next to *Covering Index* generates the name of an index if the *Auto
FK Index* switch is in the *Yes* position; or, this field is disabled.
Click the *Columns* tab to continue.
.. image:: images/foreign_key_columns.png
:alt: Foreign key dialog columns tab
:align: center
Use the fields in the *Columns* tab to specify one or more reference column(s). A Foreign Key constraint requires that one or more columns of a table must only contain values that match values in the referenced column(s) of a row of a referenced table:
Use the fields in the *Columns* tab to specify one or more reference column(s).
A Foreign Key constraint requires that one or more columns of a table must only
contain values that match values in the referenced column(s) of a row of a
referenced table:
* Use the drop-down listbox next to *Local column* to specify the column in the current table that will be compared to the foreign table.
* Use the drop-down listbox next to *References* to specify the name of the table in which the comparison column(s) resides.
* Use the drop-down listbox next to *Referencing* to specify a column in the foreign table.
* Use the drop-down listbox next to *Local column* to specify the column in the
current table that will be compared to the foreign table.
* Use the drop-down listbox next to *References* to specify the name of the
table in which the comparison column(s) resides.
* Use the drop-down listbox next to *Referencing* to specify a column in the
foreign table.
Click the *Add* icon (+) to add a column to the list; repeat the steps above and click the *Add* icon (+) to add additional columns. To discard an entry, click the trash icon to the left of the entry and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to add a column to the list; repeat the steps above and
click the *Add* icon (+) to add additional columns. To discard an entry, click
the trash icon to the left of the entry and confirm deletion in the *Delete Row*
popup.
Click the *Action* tab to continue.
.. image:: images/foreign_key_action.png
:alt: Foreign key dialog action tab
:align: center
Use the drop-down listboxes on the *Action* tab to specify behavior related to the foreign key constraint that will be performed when data within the table is updated or deleted:
Use the drop-down listboxes on the *Action* tab to specify behavior related to
the foreign key constraint that will be performed when data within the table is
updated or deleted:
* Use the drop-down listbox next to *On update* to select an action that will be performed when data in the table is updated.
* Use the drop-down listbox next to *On delete* to select an action that will be performed when data in the table is deleted.
* Use the drop-down listbox next to *On update* to select an action that will be
performed when data in the table is updated.
* Use the drop-down listbox next to *On delete* to select an action that will be
performed when data in the table is deleted.
The supported actions are:
+-------------+------------------------------------------------------------------------------------------------------------+
| NO ACTION | Produce an error indicating that the deletion or update will create a foreign key constraint violation. |
| | If the constraint is deferred, this error will be produced at constraint check time if any referencing |
@@ -74,17 +114,25 @@ The supported actions are:
Click the *SQL* tab to continue.
Your entries in the *Foreign key* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Foreign key* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Foreign key* dialog:
The following is an example of the sql command generated by user selections in
the *Foreign key* dialog:
.. image:: images/foreign_key_sql.png
:alt: Foreign key dialog sql tab
:align: center
The example shown demonstrates creating a foreign key constraint named *territory_fkey* that matches values in the *distributors* table *territory* column with those of the *sales_territories* table *region* column.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example shown demonstrates creating a foreign key constraint named
*territory_fkey* that matches values in the *distributors* table *territory*
column with those of the *sales_territories* table *region* column.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+52 -19
View File
@@ -1,24 +1,36 @@
.. _foreign_server_dialog:
*************************
The Foreign Server Dialog
*************************
******************************
`Foreign Server Dialog`:index:
******************************
Use the *Foreign Server* dialog to create a foreign server. A foreign server typically encapsulates connection information that a foreign-data wrapper uses to access an external data resource. Each foreign data wrapper may connect to a different foreign server; in the *pgAdmin* tree control, expand the node of the applicable foreign data wrapper to launch the *Foreign Server* dialog.
Use the *Foreign Server* dialog to create a foreign server. A foreign server
typically encapsulates connection information that a foreign-data wrapper uses
to access an external data resource. Each foreign data wrapper may connect to a
different foreign server; in the *pgAdmin* tree control, expand the node of the
applicable foreign data wrapper to launch the *Foreign Server* dialog.
The *Foreign Server* dialog organizes the development of a foreign server through the following dialog tabs: *General*, *Definition*, *Options*, and *Security*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Foreign Server* dialog organizes the development of a foreign server
through the following dialog tabs: *General*, *Definition*, *Options*, and
*Security*. The *SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/foreign_server_general.png
:alt: Foreign server dialog general tab
:align: center
Use the fields in the *General* tab to identify the foreign server:
* Use the *Name* field to add a descriptive name for the foreign server. The name will be displayed in the *pgAdmin* tree control. It must be unique within the database.
* Use the *Name* field to add a descriptive name for the foreign server. The
name will be displayed in the *pgAdmin* tree control. It must be unique within
the database.
* Use the drop-down listbox next to *Owner* to select a role.
* Store notes about the foreign server in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/foreign_server_definition.png
:alt: Foreign server dialog definition tab
:align: center
Use the fields in the *Definition* tab to set parameters:
@@ -28,39 +40,60 @@ Use the fields in the *Definition* tab to set parameters:
Click the *Options* tab to continue.
.. image:: images/foreign_server_options.png
:alt: Foreign server dialog options tab
:align: center
Use the fields in the *Options* tab to specify options. Click the *Add* button to create an option clause for the foreign server.
Use the fields in the *Options* tab to specify options. Click the *Add* button
to create an option clause for the foreign server.
* Specify the option name in the *Option* field.
* Provide a corresponding value in the *Value* field.
* Provide a corresponding value in the *Value* field.
Click *Add* to create each additional clause; to discard an option, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click *Add* to create each additional clause; to discard an option, click the
trash icon to the left of the row and confirm deletion in the *Delete Row*
popup.
Click the *Security* tab to continue.
.. image:: images/foreign_server_security.png
:alt: Foreign server dialog security tab
:align: center
Use the *Security* tab to assign security privileges to the foreign server. Click *Add* before you assign a set of privileges.
Use the *Security* tab to assign security privileges to the foreign server.
Click *Add* before you assign a set of privileges.
* Select the name of the role from the drop-down listbox in the *Grantee* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user.
* Select the name of the role from the drop-down listbox in the *Grantor* field. The default grantor is the owner of the foreign server. This is a required field.
* Click inside the *Privileges* field. Check the boxes to the left of one or
more privileges to grant the selected privileges to the specified user.
* Select the name of the role from the drop-down listbox in the *Grantor* field.
The default grantor is the owner of the foreign server. This is a required
field.
Click *Add* to assign a new set of privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the *Delete Row* dialog.
Click *Add* to assign a new set of privileges; to discard a privilege, click the
trash icon to the left of the row and confirm deletion in the *Delete Row*
dialog.
Click the *SQL* tab to continue.
Your entries in the *Foreign Server* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Foreign Server* dialog generate a SQL command (see an
example below). Use the *SQL* tab for review; revisit or switch tabs to make
any changes to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Foreign Server* dialog:
The following is an example of the sql command generated by user selections in
the *Foreign Server* dialog:
.. image:: images/foreign_server_sql.png
.. image:: images/foreign_server_sql.png
:alt: Foreign server dialog sql tab
:align: center
The example shown demonstrates creating a foreign server for the foreign data wrapper *hdfs_fdw*. It has the name *hdfs_server*; its type is *hiveserver2*. Options for the foreign server include a host and a port.
The example shown demonstrates creating a foreign server for the foreign data
wrapper *hdfs_fdw*. It has the name *hdfs_server*; its type is *hiveserver2*.
Options for the foreign server include a host and a port.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+106 -39
View File
@@ -1,101 +1,168 @@
.. _foreign_table_dialog:
************************
The Foreign Table Dialog
************************
*****************************
`Foreign Table Dialog`:index:
*****************************
Use the *Foreign Table* dialog to define a foreign table in the current database. Foreign tables define the structure of an external data source that resides on a foreign server.
Use the *Foreign Table* dialog to define a foreign table in the current
database. Foreign tables define the structure of an external data source that
resides on a foreign server.
The *Foreign Table* dialog organizes the development of a foreign table through the following dialog tabs: *General*, *Definition*, *Columns*, *Constraints*, *Options*, and *Security*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Foreign Table* dialog organizes the development of a foreign table through
the following dialog tabs: *General*, *Definition*, *Columns*, *Constraints*,
*Options*, and *Security*. The *SQL* tab displays the SQL code generated by
dialog selections.
.. image:: images/foreign_table_general.png
:alt: Foreign table dialog general tab
:align: center
Use the fields in the *General* tab to identify the foreign table:
* Use the *Name* field to add a descriptive name for the foreign table. The name of the foreign table must be distinct from the name of any other foreign table, table, sequence, index, view, existing data type, or materialized view in the same schema. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the name of the role that will own the foreign table.
* Select the name of the schema in which the foreign table will reside from the drop-down listbox in the *Schema* field.
* Use the *Name* field to add a descriptive name for the foreign table. The name
of the foreign table must be distinct from the name of any other foreign
table, table, sequence, index, view, existing data type, or materialized view
in the same schema. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the name of the role that
will own the foreign table.
* Select the name of the schema in which the foreign table will reside from the
drop-down listbox in the *Schema* field.
* Store notes about the foreign table in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/foreign_table_definition.png
:alt: Foreign table dialog definition tab
:align: center
Use the fields in the *Definition* tab to define the external data source:
* Use the drop-down listbox next to *Foreign server* to select a foreign server. This list is populated with servers defined through the *Foreign Server* dialog.
* Use the drop-down listbox next to *Inherits* to specify a parent table. The foreign table will inherit all of its columns. This field is optional.
* Use the drop-down listbox next to *Foreign server* to select a foreign server.
This list is populated with servers defined through the *Foreign Server*
dialog.
* Use the drop-down listbox next to *Inherits* to specify a parent table. The
foreign table will inherit all of its columns. This field is optional.
Click the *Columns* tab to continue.
.. image:: images/foreign_table_columns.png
:alt: Foreign table dialog columns tab
:align: center
Use the fields in the *Columns* tab to to add columns and their attributes to the table. Click the *Add* icon (+) to define a column:
Use the fields in the *Columns* tab to to add columns and their attributes to
the table. Click the *Add* icon (+) to define a column:
* Use the *Name* field to add a descriptive name for the column.
* Use the drop-down listbox in the *Data Type* field to select a data type for the column. This can include array specifiers. For more information on which data types are supported by PostgreSQL, refer to Chapter 8 of the core documentation.
* Use the drop-down listbox in the *Data Type* field to select a data type for
the column. This can include array specifiers. For more information on which
data types are supported by PostgreSQL, refer to Chapter 8 of the core
documentation.
Click the *Add* icon (+) to specify each additional column; to discard a column, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to specify each additional column; to discard a column,
click the trash icon to the left of the row and confirm deletion in the *Delete
Row* popup.
Click the *Constraints* tab to continue.
.. image:: images/foreign_table_constraints.png
:alt: Foreign table dialog constraints tab
:align: center
Use the fields in the *Constraints* tab to apply a table constraint to the foreign table. Click the *Add* icon (+) to define a constraint:
Use the fields in the *Constraints* tab to apply a table constraint to the
foreign table. Click the *Add* icon (+) to define a constraint:
* Use the *Name* field to add a descriptive name for the constraint. If the constraint is violated, the constraint name is present in error messages, so constraint names like *col must be positive* can be used to communicate helpful information.
* Use the *Check* field to write a check expression producing a Boolean result. Each row in the foreign table is expected to satisfy the check expression.
* Check the *No Inherit* checkbox to specify that the constraint will not propagate to child tables.
* Uncheck the *Validate* checkbox to disable validation. The database will not assume that the constraint holds for all rows in the table.
* Use the *Name* field to add a descriptive name for the constraint. If the
constraint is violated, the constraint name is present in error messages, so
constraint names like *col must be positive* can be used to communicate
helpful information.
* Use the *Check* field to write a check expression producing a Boolean result.
Each row in the foreign table is expected to satisfy the check expression.
* Check the *No Inherit* checkbox to specify that the constraint will not
propagate to child tables.
* Uncheck the *Validate* checkbox to disable validation. The database will not
assume that the constraint holds for all rows in the table.
Click the *Add* icon (+) to specify each additional constraint; to discard a constraint, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to specify each additional constraint; to discard a
constraint, click the trash icon to the left of the row and confirm deletion in
he *Delete Row* popup.
Click the *Options* tab to continue.
.. image:: images/foreign_table_options.png
:alt: Foreign table dialog options tab
:align: center
Use the fields in the *Options* tab to specify options to be associated with the new foreign table or one of its columns; the accepted option names and values are specific to the foreign data wrapper associated with the foreign server. Click the *Add* icon (+) to add an option/value pair.
Use the fields in the *Options* tab to specify options to be associated with
the new foreign table or one of its columns; the accepted option names and
values are specific to the foreign data wrapper associated with the foreign
server. Click the *Add* icon (+) to add an option/value pair.
* Specify the option name in the *Option* field. Duplicate option names are not allowed.
* Provide a corresponding value in the *Value* field.
* Specify the option name in the *Option* field. Duplicate option names are not
allowed.
* Provide a corresponding value in the *Value* field.
Click the *Add* icon (+) to specify each additional option/value pair; to discard an option, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to specify each additional option/value pair; to
discard an option, click the trash icon to the left of the row and confirm
deletion in the *Delete Row* popup.
Click the *Security* tab to continue.
.. image:: images/foreign_table_security.png
:alt: Foreign table dialog security tab
:align: center
Use the *Security* tab to assign privileges and define security labels.
Use the *Security* tab to assign privileges and define security labels.
Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon (+) to set privileges for database objects:
Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon
(+) to set privileges for database objects:
* Select the name of the role to which privileges will be assigned from the drop-down listbox in the *Grantee* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user.
* Select the name of the role that owns the foreign table from the drop-down listbox in the *Grantor* field. The default grantor is the owner of the database.
* Select the name of the role to which privileges will be assigned from the
drop-down listbox in the *Grantee* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or
more privileges to grant the selected privilege to the specified user.
* Select the name of the role that owns the foreign table from the drop-down
listbox in the *Grantor* field. The default grantor is the owner of the
database.
Click the *Add* icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to assign additional privileges; to discard a
privilege, click the trash icon to the left of the row and confirm deletion in
the *Delete Row* popup.
Use the *Security Labels* panel to define security labels applied to the function. Click the *Add* icon (+) to add each security label selection:
Use the *Security Labels* panel to define security labels applied to the
function. Click the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them.
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
Click the *Add* icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to assign additional security labels; to discard a
security label, click the trash icon to the left of the row and confirm deletion
in the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Foreign Table* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Foreign Table* dialog generate a SQL command (see an
example below). Use the *SQL* tab for review; revisit or switch tabs to make
any changes to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Foreign Table* dialog:
The following is an example of the sql command generated by user selections in
the *Foreign Table* dialog:
.. image:: images/foreign_table_sql.png
:alt: Foreign table dialog sql tab
:align: center
The example shown demonstrates creating a foreign table *weblogs* with multiple columns and two options.
The example shown demonstrates creating a foreign table *weblogs* with multiple
columns and two options.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+42 -19
View File
@@ -1,58 +1,81 @@
.. _fts_configuration_dialog:
****************************
The FTS Configuration dialog
****************************
Use the *FTS Configuration* dialog to configure a full text search. A text search configuration specifies a text search parser that can divide a string into tokens, along with dictionaries that can identify searchable tokens.
*********************************
`FTS Configuration Dialog`:index:
*********************************
Use the *FTS Configuration* dialog to configure a full text search. A text
search configuration specifies a text search parser that can divide a string
into tokens, along with dictionaries that can identify searchable tokens.
The *FTS Configuration* dialog organizes the development of a FTS configuration
through the following dialog tabs: "*General*, *Definition*, and *Tokens*. The
*SQL* tab displays the SQL code generated by dialog selections.
The *FTS Configuration* dialog organizes the development of a FTS configuration through the following dialog tabs: "*General*, *Definition*, and *Tokens*. The *SQL* tab displays the SQL code generated by dialog selections.
Click the *General* tab to begin.
.. image:: images/fts_configuration_general.png
:alt: FTS configuration dialog general tab
:align: center
Use the fields in the *General* tab to identify a FTS configuration:
* Use the *Name* field to add a descriptive name for the FTS configuration. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to specify the role that will own the configuration.
* Select the name of the schema in which the FTS configuration will reside from the drop-down listbox in the *Schema* field.
* Use the *Name* field to add a descriptive name for the FTS configuration. The
name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to specify the role that will own
the configuration.
* Select the name of the schema in which the FTS configuration will reside from
the drop-down listbox in the *Schema* field.
* Store notes about the FTS configuration in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/fts_configuration_definition.png
:alt: FTS configuration dialog definition tab
:align: center
Use the fields in the *Definition* tab to define parameters:
* Select the name of the text search parser from the drop-down listbox in the *Parser* field.
* Select the name of the text search parser from the drop-down listbox in the
*Parser* field.
* Select a language from the drop-down listbox in the *Copy Config* field.
Click the *Tokens* tab to continue.
.. image:: images/fts_configuration_tokens.png
:alt: FTS configuration dialog tokens tab
:align: center
Use the fields in the *Tokens* tab to add a token:
* Use the *Tokens* field to specify the name of a token.
* Click the *Add* icon (+) to create a token.
* Use the *Dictionaries* field to specify a dictionary.
* Use the *Dictionaries* field to specify a dictionary.
Repeat these steps to add additional tokens; to discard a token, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Repeat these steps to add additional tokens; to discard a token, click the
trash icon to the left of the row and confirm deletion in the *Delete Row*
popup.
Click the *SQL* tab to continue.
Your entries in the *FTS Configuration* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *FTS Configuration* dialog generate a SQL command (see an
example below). Use the *SQL* tab for review; revisit or switch tabs to make
any changes to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *FTS Configuration* dialog:
The following is an example of the sql command generated by user selections in
the *FTS Configuration* dialog:
.. image:: images/fts_configuration_sql.png
:alt: FTS configuration dialog sql tab
:align: center
The example shown demonstrates creating a FTS configuration named *meme_phrases*. It uses the *default* parser.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example shown demonstrates creating a FTS configuration named
*meme_phrases*. It uses the *default* parser.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+80 -26
View File
@@ -1,58 +1,112 @@
.. _fts_dictionary_dialog:
*************************
The FTS Dictionary Dialog
*************************
******************************
`FTS Dictionary Dialog`:index:
******************************
Use the *FTS Dictionary* dialog to create a full text search dictionary. You can use a predefined templates or create a new dictionary with custom parameters.
Use the *FTS Dictionary* dialog to create a full text search dictionary. You
can use a predefined templates or create a new dictionary with custom
parameters.
The *FTS Dictionary* dialog organizes the development of a FTS dictionary through the following dialog tabs: *General*, *Definition*, and *Options*. The *SQL* tab displays the SQL code generated by dialog selections.
The *FTS Dictionary* dialog organizes the development of a FTS dictionary
through the following dialog tabs: *General*, *Definition*, and *Options*. The
*SQL* tab displays the SQL code generated by dialog selections.
.. image:: images/fts_dictionary_general.png
:alt: FTS dictionary dialog general tab
:align: center
Use the fields in the *General* tab to identify the dictionary:
* Use the *Name* field to add a descriptive name for the dictionary. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the role that will own the FTS Dictionary.
* Select the name of the schema in which the dictionary will reside from the drop-down listbox in the *Schema* field.
* Use the *Name* field to add a descriptive name for the dictionary. The name
will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the role that will own the
FTS Dictionary.
* Select the name of the schema in which the dictionary will reside from the
drop-down listbox in the *Schema* field.
* Store notes about the dictionary in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/fts_dictionary_definition.png
Use the field in the *Definition* tab to choose a template from the drop-down listbox:
:alt: FTS dictionary dialog definition tab
:align: center
*Select *ispell* to select the Ispell template. The Ispell dictionary template supports morphological dictionaries, which can normalize many different linguistic forms of a word into the same lexeme. For example, an English Ispell dictionary can match all declensions and conjugations of the search term bank, e.g., banking, banked, banks, banks', and bank's. Ispell dictionaries usually recognize a limited set of words, so they should be followed by another broader dictionary; for example, a Snowball dictionary, which recognizes everything.
*Select *simple* to select the simple template. The simple dictionary template operates by converting the input token to lower case and checking it against a file of stop words. If it is found in the file then an empty array is returned, causing the token to be discarded. If not, the lower-cased form of the word is returned as the normalized lexeme. Alternatively, the dictionary can be configured to report non-stop-words as unrecognized, allowing them to be passed on to the next dictionary in the list.
*Select *snowball* to select the Snowball template. The Snowball dictionary template is based on a project by Martin Porter, inventor of the popular Porter's stemming algorithm for the English language. Snowball now provides stemming algorithms for many languages (see the Snowball site for more information). Each algorithm understands how to reduce common variant forms of words to a base, or stem, spelling within its language. A Snowball dictionary recognizes everything, whether or not it is able to simplify the word, so it should be placed at the end of the dictionary list. It is useless to have it before any other dictionary because a token will never pass through it to the next dictionary.
*Select *synonym* to select the synonym template. This dictionary template is used to create dictionaries that replace a word with a synonym. Phrases are not supported (use the thesaurus template (Section 12.6.4) for that). A synonym dictionary can be used to overcome linguistic problems, for example, to prevent an English stemmer dictionary from reducing the word Paris to pari.
*Select *thesaurus* to select the thesaurus template. A thesaurus dictionary replaces all non-preferred terms by one preferred term and, optionally, preserves the original terms for indexing as well. PostgreSQL's current implementation of the thesaurus dictionary is an extension of the synonym dictionary with added phrase support.
Use the field in the *Definition* tab to choose a template from the drop-down
listbox:
* Select *ispell* to select the Ispell template. The Ispell dictionary template
supports morphological dictionaries, which can normalize many different
linguistic forms of a word into the same lexeme. For example, an English
Ispell dictionary can match all declensions and conjugations of the search
term bank, e.g., banking, banked, banks, banks', and bank's. Ispell
dictionaries usually recognize a limited set of words, so they should be
followed by another broader dictionary; for example, a Snowball dictionary,
which recognizes everything.
* Select *simple* to select the simple template. The simple dictionary template
operates by converting the input token to lower case and checking it against
a file of stop words. If it is found in the file then an empty array is
returned, causing the token to be discarded. If not, the lower-cased form of
the word is returned as the normalized lexeme. Alternatively, the dictionary
can be configured to report non-stop-words as unrecognized, allowing them to
be passed on to the next dictionary in the list.
* Select *snowball* to select the Snowball template. The Snowball dictionary
template is based on a project by Martin Porter, inventor of the popular
Porter's stemming algorithm for the English language. Snowball now provides
stemming algorithms for many languages (see the Snowball site for more
information). Each algorithm understands how to reduce common variant forms of
words to a base, or stem, spelling within its language. A Snowball dictionary
recognizes everything, whether or not it is able to simplify the word, so it
should be placed at the end of the dictionary list. It is useless to have it
before any other dictionary because a token will never pass through it to the
next dictionary.
* Select *synonym* to select the synonym template. This dictionary template is
used to create dictionaries that replace a word with a synonym. Phrases are not
supported (use the thesaurus template (Section 12.6.4) for that). A synonym
dictionary can be used to overcome linguistic problems, for example, to prevent
an English stemmer dictionary from reducing the word Paris to pari.
* Select *thesaurus* to select the thesaurus template. A thesaurus dictionary
replaces all non-preferred terms by one preferred term and, optionally,
preserves the original terms for indexing as well. PostgreSQL's current
implementation of the thesaurus dictionary is an extension of the synonym
dictionary with added phrase support.
Click the *Options* tab to continue.
.. image:: images/fts_dictionary_options.png
Use the fields in the *Options* tab to provide template-specific options. Click the *Add* icon (+) to add an option clause:
:alt: FTS dictionary dialog options tab
:align: center
Use the fields in the *Options* tab to provide template-specific options. Click
the *Add* icon (+) to add an option clause:
* Specify the name of an option in the *Option* field
* Provide a value for the option in the *Value* field.
Click the *Add* icon (+) to specify each additional option/value pair; to discard an option, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to specify each additional option/value pair; to
discard an option, click the trash icon to the left of the row and confirm
deletion in the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *FTS Dictionary* dialog generate a generate a SQL command. Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
**Example**
Your entries in the *FTS Dictionary* dialog generate a generate a SQL command.
Use the *SQL* tab for review; revisit or switch tabs to make any changes to the
SQL command.
The following is an example of the sql command generated by user selections in the *FTS Dictionary* dialog:
Example
*******
The following is an example of the sql command generated by user selections in
the *FTS Dictionary* dialog:
.. image:: images/fts_dictionary_sql.png
:alt: FTS dictionary dialog sql tab
:align: center
The example shown demonstrates creating a custom dictionary named *more_stopwords* which is based on the simple template and is configured to use standard English.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example shown demonstrates creating a custom dictionary named
*more_stopwords* which is based on the simple template and is configured to use standard English.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+37 -15
View File
@@ -1,40 +1,62 @@
.. _fts_parser_dialog:
*********************
The FTS Parser Dialog
*********************
**************************
`FTS Parser Dialog`:index:
**************************
Use the *FTS Parser* dialog to create a new text search parser. A text search parser defines a method for splitting a text string into tokens and assigning types (categories) to the tokens.
Use the *FTS Parser* dialog to create a new text search parser. A text search
parser defines a method for splitting a text string into tokens and assigning
types (categories) to the tokens.
The *FTS Parser* dialog organizes the development of a text search parser through the following dialog tabs: *General*, and *Definition*. The *SQL* tab displays the SQL code generated by dialog selections.
The *FTS Parser* dialog organizes the development of a text search parser
through the following dialog tabs: *General*, and *Definition*. The *SQL* tab
displays the SQL code generated by dialog selections.
.. image:: images/fts_parser_general.png
:alt: FTS parser dialog general tab
:align: center
Use the fields in the *General* tab to identify a text search parser:
* Use the *Name* field to add a descriptive name for the parser. The name will be displayed in the *pgAdmin* tree control.
* Select the name of the schema in which the parser will reside from the drop-down listbox in the *Schema* field.
* Use the *Name* field to add a descriptive name for the parser. The name will
be displayed in the *pgAdmin* tree control.
* Select the name of the schema in which the parser will reside from the
drop-down listbox in the *Schema* field.
* Store notes about the domain in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/fts_parser_definition.png
:alt: FTS parser dialog definition tab
:align: center
Use the fields in the *Definition* tab to define parameters:
* Use the drop-down listbox next to *Start function* to select the name of the function that will initialize the parser.
* Use the drop-down listbox next to *Get next token function* to select the name of the function that will return the next token.
* Use the drop-down listbox next to *End function* to select the name of the function that is called when the parser is finished.
* Use the drop-down listbox next to *Lextypes function* to select the name of the lextypes function for the parser. The lextypes function returns an array that contains the id, alias, and a description of the tokens used by the parser.
* Use the drop-down listbox next to *Headline function* to select the name of the headline function for the parser. The headline function returns an excerpt from the document in which the terms of the query are highlighted.
* Use the drop-down listbox next to *Start function* to select the name of the
function that will initialize the parser.
* Use the drop-down listbox next to *Get next token function* to select the
name of the function that will return the next token.
* Use the drop-down listbox next to *End function* to select the name of the
function that is called when the parser is finished.
* Use the drop-down listbox next to *Lextypes function* to select the name of
the lextypes function for the parser. The lextypes function returns an array
that contains the id, alias, and a description of the tokens used by the
parser.
* Use the drop-down listbox next to *Headline function* to select the name of
the headline function for the parser. The headline function returns an excerpt
from the document in which the terms of the query are highlighted.
Click the *SQL* tab to continue.
.. image:: images/fts_parser_sql.png
:alt: FTS parser dialog sql tab
:align: center
Your entries in the *FTS Parser* dialog generate a generate a SQL command. Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
Your entries in the *FTS Parser* dialog generate a generate a SQL command. Use
the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL
command.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+33 -15
View File
@@ -1,43 +1,61 @@
.. _fts_template_dialog:
***********************
The FTS Template Dialog
***********************
****************************
`FTS Template Dialog`:index:
****************************
Use the *FTS Template* dialog to create a new text search template. A text search template defines the functions that implement text search dictionaries.
Use the *FTS Template* dialog to create a new text search template. A text
search template defines the functions that implement text search dictionaries.
The *FTS Template* dialog organizes the development of a text search Template through the following dialog tabs: *General*, and *Definition*. The *SQL* tab displays the SQL code generated by dialog selections.
The *FTS Template* dialog organizes the development of a text search Template
through the following dialog tabs: *General*, and *Definition*. The *SQL* tab
displays the SQL code generated by dialog selections.
.. image:: images/fts_template_general.png
:alt: FTS template dialog general tab
:align: center
Use the fields in the *General* tab to identify a template:
* Use the *Name* field to add a descriptive name for the template. The name will be displayed in the *pgAdmin* tree control.
* Select the name of the schema in which the template will reside from the drop-down listbox in the *Schema* field.
* Use the *Name* field to add a descriptive name for the template. The name will
be displayed in the *pgAdmin* tree control.
* Select the name of the schema in which the template will reside from the
drop-down listbox in the *Schema* field.
* Store notes about the template in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/fts_template_definition.png
:alt: FTS template dialog definition tab
:align: center
Use the fields in the *Definition* tab to define function parameters:
* Use the drop-down listbox next to *Init function* to select the name of the init function for the template. The init function is optional.
* Use the drop-down listbox next to *Lexize function* to select the name of the lexize function for the template. The lexize function is required.
* Use the drop-down listbox next to *Init function* to select the name of the
init function for the template. The init function is optional.
* Use the drop-down listbox next to *Lexize function* to select the name of the
lexize function for the template. The lexize function is required.
Click the *SQL* tab to continue.
Your entries in the *FTS Template* dialog generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *FTS Template* dialog generate a SQL command (see an example
below). Use the *SQL* tab for review; revisit or switch tabs to make any changes
to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *FTS Template* dialog:
The following is an example of the sql command generated by user selections in
the *FTS Template* dialog:
.. image:: images/fts_template_sql.png
:alt: FTS template dialog sql tab
:align: center
The example shown demonstrates creating a fts template named *ru_template* that uses the ispell dictionary.
* Click the *Info* button (i) to access online help. View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example shown demonstrates creating a fts template named *ru_template* that
uses the ispell dictionary.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+121 -47
View File
@@ -1,111 +1,185 @@
.. _function_dialog:
*******************
The Function Dialog
*******************
************************
`Function Dialog`:index:
************************
Use the *Function* dialog to define a function. If you drop and then recreate a function, the new function is not the same entity as the old; you must drop existing rules, views, triggers, etc. that refer to the old function.
Use the *Function* dialog to define a function. If you drop and then recreate
a function, the new function is not the same entity as the old; you must drop
existing rules, views, triggers, etc. that refer to the old function.
The *Function* dialog organizes the development of a function through the following dialog tabs: *General*, *Definition*, *Options*, *Arguments*, *Parameters*, and *Security*. The *SQL* tab displays the SQL code generated by dialog selections.
The *Function* dialog organizes the development of a function through the
following dialog tabs: *General*, *Definition*, *Options*, *Arguments*,
*Parameters*, and *Security*. The *SQL* tab displays the SQL code generated by
dialog selections.
.. image:: images/function_general.png
:alt: Function dialog general tab
:align: center
Use the fields in the *General* tab to identify a function:
* Use the *Name* field to add a descriptive name for the function. The name will be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the name of the role that will own the function.
* Use the drop-down listbox next to *Schema* to select the schema in which the function will be created.
* Use the *Name* field to add a descriptive name for the function. The name will
be displayed in the *pgAdmin* tree control.
* Use the drop-down listbox next to *Owner* to select the name of the role that
will own the function.
* Use the drop-down listbox next to *Schema* to select the schema in which the
function will be created.
* Store notes about the function in the *Comment* field.
Click the *Definition* tab to continue.
.. image:: images/function_definition.png
:alt: Function dialog definition tab
:align: center
Use the fields in the *Definition* tab to define the function:
* Use the drop-down listbox next to *Return type* to select the data type returned by the function, if any.
* Use the drop-down listbox next to *Language* to select the implementation language. The default is *sql*.
* Use the *Code* field to write the code that will execute when the function is called.
* Use the drop-down listbox next to *Return type* to select the data type
returned by the function, if any.
* Use the drop-down listbox next to *Language* to select the implementation
language. The default is *sql*.
* Use the *Code* field to write the code that will execute when the function
is called.
Click the *Options* tab to continue.
.. image:: images/function_options.png
:alt: Function dialog options tab
:align: center
Use the fields in the *Options* tab to describe or modify the action of the function:
Use the fields in the *Options* tab to describe or modify the action of the
function:
* Use the drop-down listbox next to *Volatility* to select one of the following. *VOLATILE* is the default value.
* Use the drop-down listbox next to *Volatility* to select one of the following.
*VOLATILE* is the default value.
* *VOLATILE* indicates that the function value can change even within a single table scan, so no optimizations can be made.
* *STABLE* indicates that the function cannot modify the database, and that within a single table scan it will consistently return the same result for the same argument values.
* *IMMUTABLE* indicates that the function cannot modify the database and always returns the same result when given the same argument values.
* Move the *Returns a Set?* switch to indicate if the function returns a set that includes multiple rows. The default is *No*.
* Move the *Strict?* switch to indicate if the function always returns NULL whenever any of its arguments are NULL. If *Yes*, the function is not executed when there are NULL arguments; instead a NULL result is assumed automatically. The default is *No*.
* Move the *Security of definer?* switch to specify that the function is to be executed with the privileges of the user that created it. The default is *No*.
* Move the *Window?* switch to indicate that the function is a window function rather than a plain function. The default is *No*. This is currently only useful for functions written in C. The WINDOW attribute cannot be changed when replacing an existing function definition. For more information about the CREATE FUNCTION command, see the PostgreSQL core documentation available at:
* *VOLATILE* indicates that the function value can change even within a
single table scan, so no optimizations can be made.
* *STABLE* indicates that the function cannot modify the database, and that
within a single table scan it will consistently return the same result for
the same argument values.
* *IMMUTABLE* indicates that the function cannot modify the database and
always returns the same result when given the same argument values.
http://www.postgresql.org/docs/9.5/static/functions-window.html
* Use the *Estimated cost* field to specify a positive number representing the estimated execution cost for the function, in units of cpu_operator_cost. If the function returns a set, this is the cost per returned row.
* Use the *Estimated rows* field to specify a positive number giving the estimated number of rows that the query planner should expect the function to return. This is only allowed when the function is declared to return a set. The default assumption is 1000 rows.
* Move the *Leak proof?* switch to indicate whether the function has side effects. The default is *No*. This option can only be set by the superuser.
* Move the *Returns a Set?* switch to indicate if the function returns a set
that includes multiple rows. The default is *No*.
* Move the *Strict?* switch to indicate if the function always returns NULL
whenever any of its arguments are NULL. If *Yes*, the function is not executed
when there are NULL arguments; instead a NULL result is assumed
automatically. The default is *No*.
* Move the *Security of definer?* switch to specify that the function is to be
executed with the privileges of the user that created it. The default is *No*.
* Move the *Window?* switch to indicate that the function is a window function
rather than a plain function. The default is *No*. This is currently only
useful for functions written in C. The WINDOW attribute cannot be changed when
replacing an existing function definition. For more information about the
CREATE FUNCTION command, see the PostgreSQL core documentation available at:
https://www.postgresql.org/docs/current/functions-window.html
* Use the *Estimated cost* field to specify a positive number representing the
estimated execution cost for the function, in units of cpu_operator_cost. If
the function returns a set, this is the cost per returned row.
* Use the *Estimated rows* field to specify a positive number giving the
estimated number of rows that the query planner should expect the function to
return. This is only allowed when the function is declared to return a set.
The default assumption is 1000 rows.
* Move the *Leak proof?* switch to indicate whether the function has side
effects. The default is *No*. This option can only be set by the superuser.
Click the *Arguments* tab to continue.
.. image:: images/function_arguments.png
:alt: Function dialog arguments tab
:align: center
Use the fields in the *Arguments* tab to define an argument. Click the *Add* icon (+) to set parameters and values for the argument:
Use the fields in the *Arguments* tab to define an argument. Click the *Add*
icon (+) to set parameters and values for the argument:
* Use the drop-down listbox in the *Data type* field to select a data type.
* Use the drop-down listbox in the *Mode* field to select a mode. Select *IN* for an input parameter; select *OUT* for an output parameter; select *INOUT* for both an input and an output parameter; or, select *VARIADIC* to specify a VARIADIC parameter.
* Use the drop-down listbox in the *Mode* field to select a mode. Select *IN*
for an input parameter; select *OUT* for an output parameter; select *INOUT*
for both an input and an output parameter; or, select *VARIADIC* to specify a
VARIADIC parameter.
* Provide a name for the argument in the *Argument Name* field.
* Specify a default value for the argument in the *Default Value* field.
Click the *Add* icon (+) to define another argument; to discard an argument, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to define another argument; to discard an argument,
click the trash icon to the left of the row and confirm deletion in the *Delete
Row* popup.
Click the *Parameters* tab to continue.
.. image:: images/function_parameters.png
:alt: Function dialog parameters tab
:align: center
Use the fields in the *Parameters* tab to specify settings that will be applied when the function is invoked. Click the *Add* icon (+) to add a *Name*/*Value* field in the table.
Use the fields in the *Parameters* tab to specify settings that will be applied
when the function is invoked. Click the *Add* icon (+) to add a *Name*/*Value*
field in the table.
* Use the drop-down listbox in the *Name* column in the *Parameters* panel to select a parameter.
* Use the *Value* field to specify the value that will be associated with the selected variable. This field is context-sensitive.
* Use the drop-down listbox in the *Name* column in the *Parameters* panel to
select a parameter.
* Use the *Value* field to specify the value that will be associated with the
selected variable. This field is context-sensitive.
Click the *Security* tab to continue.
.. image:: images/function_security.png
:alt: Function dialog security tab
:align: center
Use the *Security* tab to assign privileges and define security labels.
Use the *Security* tab to assign privileges and define security labels.
Use the *Privileges* panel to assign usage privileges for the function to a role.
Use the *Privileges* panel to assign usage privileges for the function to a
role.
* Select the name of the role from the drop-down listbox in the *Grantee* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user.
* Select the name of the role from the drop-down listbox in the *Grantor* field. The default grantor is the owner of the database.
* Click inside the *Privileges* field. Check the boxes to the left of one or
more privileges to grant the selected privilege to the specified user.
* Select the name of the role from the drop-down listbox in the *Grantor* field.
The default grantor is the owner of the database.
Click the *Add* icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to assign additional privileges; to discard a
privilege, click the trash icon to the left of the row and confirm deletion in
the *Delete Row* popup.
Use the *Security Labels* panel to define security labels applied to the function. Click the *Add* icon (+) to add each security label selection:
Use the *Security Labels* panel to define security labels applied to the
function. Click the *Add* icon (+) to add each security label selection:
* Specify a security label provider in the *Provider* field. The named provider must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them.
* Specify a security label provider in the *Provider* field. The named provider
must be loaded and must consent to the proposed labeling operation.
* Specify a a security label in the *Security Label* field. The meaning of a
given label is at the discretion of the label provider. PostgreSQL places no
restrictions on whether or how a label provider must interpret security
labels; it merely provides a mechanism for storing them.
Click the *Add* icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup.
Click the *Add* icon (+) to assign additional security labels; to discard a
security label, click the trash icon to the left of the row and confirm deletion
in the *Delete Row* popup.
Click the *SQL* tab to continue.
Your entries in the *Function* dialog generate a generate a SQL command (see an example below). Use the *SQL* tab for review; revisit or switch tabs to make any changes to the SQL command.
Your entries in the *Function* dialog generate a generate a SQL command (see an
example below). Use the *SQL* tab for review; revisit or switch tabs to make any
changes to the SQL command.
**Example**
Example
*******
The following is an example of the sql command generated by selections made in the *Function* dialog:
The following is an example of the sql command generated by selections made in
the *Function* dialog:
.. image:: images/function_sql.png
:alt: Function dialog sql tab
:align: center
The example demonstrates creating an *edbspl* function named *emp_comp*. The function adds two columns (p_sal and p_comm), and then uses the result to compute a yearly salary, returning a NUMERIC value.
* Click the *Info* button (i) to access online help.View context-sensitive help in the *Tabbed browser*, where a new tab displays the PostgreSQL core documentation.
The example demonstrates creating an *edbspl* function named *emp_comp*. The
function adds two columns (p_sal and p_comm), and then uses the result to
compute a yearly salary, returning a NUMERIC value.
* Click the *Info* button (i) to access online help.
* Click the *Save* button to save work.
* Click the *Cancel* button to exit without saving work.
* Click the *Reset* button to restore configuration parameters.
+59 -35
View File
@@ -1,56 +1,80 @@
.. _getting_started:
***************
Getting Started
***************
************************
`Getting Started`:index:
************************
Pre-compiled and configured installation packages for pgAdmin 4 are available for a number of desktop environments; we recommend using an installer whenever possible. A standard installation using the pgAdmin installer is a server deployment.
Pre-compiled and configured installation packages for pgAdmin 4 are available
for a number of desktop environments; we recommend using an installer
whenever possible.
In a Server Deployment, the pgAdmin application is deployed behind a webserver or with the WSGI interface.
If you install pgAdmin in server mode, you will be prompted to provide a role name and pgAdmin password when you initially connect to pgAdmin. The first role registered with pgAdmin will be an administrative user; the administrative role can use the pgAdmin *User Management* dialog to create and manage additional pgAdmin user accounts. When a user authenticates with pgAdmin, the pgAdmin tree control displays the server definitions associated with that login role.
In a *Server Deployment*, the pgAdmin application is deployed behind a webserver
or with the WSGI interface.
If you install pgAdmin in server mode, you will be prompted to provide a role
name and pgAdmin password when you initially connect to pgAdmin. The first
role registered with pgAdmin will be an administrative user; the
administrative role can use the pgAdmin *User Management* dialog to create
and manage additional pgAdmin user accounts. When a user authenticates
with pgAdmin, the pgAdmin tree control displays the server definitions
associated with that login role.
Contents:
In a *Desktop Deployment*, the pgAdmin application is configured to use the
desktop runtime environment to host the program on a supported platform.
Typically, users will install a pre-built package to run pgAdmin in desktop
mode, but a manual desktop deployment can be installed and though it is more
difficult to setup, it may be useful for developers interested in understanding
how pgAdmin works.
.. toctree::
server_deployment
pgadmin_login
pgadmin_user
In a Desktop Deployment, the pgAdmin application is configured to use the desktop runtime environment to host and display the program on a supported platform. Typically, users will install a pre-built package to run pgAdmin in desktop mode, but a manual desktop deployment can be installed and though it is more difficult to setup, it may be useful for developers interested in understanding how pgAdmin works.
Contents:
It is also possible to use a *Container Deployment* of pgAdmin, in which Server
Mode is pre-configured for security.
.. toctree::
:maxdepth: 2
desktop_deployment
The pgAdmin 4 client features a highly-customizable display that features drag-and-drop panels that you can arrange to make the best use of your desktop environment.
deployment
login
user_management
change_user_password
The tree control provides an elegant overview of the managed servers, and the objects that reside on each server. Right-click on a node within the tree control to access context-sensitive menus that provide quick access to management tasks for the selected object.
The tabbed browser provide quick access to statistical information about each object in the tree control, and pgAdmin tools and utilities (such as the Query tool and the debugger). pgAdmin opens additional feature tabs each time you access the extended functionality offered by pgAdmin tools; you can open, close, and re-arrange feature tabs as needed.
.. note:: Pre-compiled and configured installation packages are available for
a number of platforms. These packages should be used by end-users whereever
possible - the following information is useful for the maintainers of those
packages and users interested in understanding how pgAdmin works.
Use the *Preferences* dialog to customize the content and colors of the pgAdmin display. To open the *Preferences* dialog, select *Preferences* from the *File* menu.
The pgAdmin 4 client features a highly-customizable display that features
drag-and-drop panels that you can arrange to make the best use of your desktop
environment.
*Help* buttons in the lower-left corner of each dialog will open the online help for the dialog. You can access additional Postgres help by navigating through the *Help* menu, and selecting the name of the resource that you wish to open.
The tree control provides an elegant overview of the managed servers, and the
objects that reside on each server. Right-click on a node within the tree control
to access context-sensitive menus that provide quick access to management tasks
for the selected object.
Contents:
The tabbed browser provide quick access to statistical information about each
object in the tree control, and pgAdmin tools and utilities (such as the Query
tool and the debugger). pgAdmin opens additional feature tabs each time you
access the extended functionality offered by pgAdmin tools; you can open, close,
and re-arrange feature tabs as needed.
Use the *Preferences* dialog to customize the content and behaviour of the pgAdmin
display. To open the *Preferences* dialog, select *Preferences* from the *File* menu.
*Help* buttons in the lower-left corner of each dialog will open the online help
for the dialog. You can access additional Postgres help by navigating through
the *Help* menu, and selecting the name of the resource that you wish to open.
.. toctree::
:maxdepth: 2
browser
pgadmin_menu_bar
pgadmin_tabbed_browser
pgadmin_tree_control
user_interface
menu_bar
toolbar
tabbed_browser
tree_control
preferences
keyboard_shortcuts
Before using pgAdmin to manage objects that reside on a server, you must define a connection to the server; for more information please see *Connecting to a Server*:
Contents:
.. toctree::
connecting
Before using pgAdmin to manage objects that reside on a server, you must define a
connection to the server; for more information please see *Connecting to a Server*
in the next section.
+63 -22
View File
@@ -1,51 +1,92 @@
.. _grant_wizard:
************
Grant Wizard
************
*********************
`Grant Wizard`:index:
*********************
The *Grant Wizard* tool is a graphical interface that allows you to manage the privileges of one or more database objects in a point-and-click environment. A search box, dropdown lists, and checkboxes facilitate quick selections of database objects, roles and privileges.
The *Grant Wizard* tool is a graphical interface that allows you to manage the
privileges of one or more database objects in a point-and-click environment. A
search box, dropdown lists, and checkboxes facilitate quick selections of
database objects, roles and privileges.
The wizard organizes privilege management through a sequence of windows: *Object Selection (step 1 of 3)*, *Privileges Selection (step 2 of 3)* and *Final (Review Selection) (step 3 of 3)*. The *Final (Review Selection)* window displays the SQL code generated by wizard selections.
To launch the *Grant Wizard* tool, select a database object in the *pgAdmin* tree control, then navigate through *Tools* on the menu bar to click on the *Grant Wizard* option.
The wizard organizes privilege management through a sequence of windows:
*Object Selection (step 1 of 3)*, *Privileges Selection (step 2 of 3)* and
*Final (Review Selection) (step 3 of 3)*. The *Final (Review Selection)* window
displays the SQL code generated by wizard selections.
To launch the *Grant Wizard* tool, select a database object in the *pgAdmin*
tree control, then navigate through *Tools* on the menu bar to click on the
*Grant Wizard* option.
.. image:: images/grant_wizard_step1.png
:alt: Grant wizard step one page
:align: center
Use the fields in the *Object Selection (step 1 of 3)* window to select the object or objects on which you are modifying privileges. Use the *Search by object type or name* field to locate a database object, or use the scrollbar to scroll through the list of all accessible objects.
Use the fields in the *Object Selection (step 1 of 3)* window to select the
object or objects on which you are modifying privileges. Use the *Search by
object type or name* field to locate a database object, or use the scrollbar
to scroll through the list of all accessible objects.
* Each row in the table lists object identifiers; check the checkbox in the left column to include an object as a target of the Grant Wizard. The table displays:
* Each row in the table lists object identifiers; check the checkbox in the left
column to include an object as a target of the Grant Wizard. The table
displays:
* The object type in the *Object Type* field
* The schema in which the object resides in the *Schema* field
* The object name in the *Name* field.
* The object name in the *Name* field.
Click the *Next* button to continue, or the *Cancel* button to close the wizard without modifying privileges.
Click the *Next* button to continue, or the *Cancel* button to close the wizard
without modifying privileges.
.. image:: images/grant_wizard_step2.png
:alt: Grant wizard step two page
:align: center
Use the fields in the *Privileges Selection (step 2 of 3)* window to grant privileges. If you grant a privilege WITH GRANT OPTION, the Grantee will have the right to grant privileges on the object to others. If WITH GRANT OPTION is subsequently revoked, any role who received access to that object from that Grantee (directly or through a chain of grants) will lose thier privileges on the object.
Use the fields in the *Privileges Selection (step 2 of 3)* window to grant
privileges. If you grant a privilege WITH GRANT OPTION, the Grantee will have
the right to grant privileges on the object to others. If WITH GRANT OPTION is
subsequently revoked, any role who received access to that object from that
Grantee (directly or through a chain of grants) will lose thier privileges on
the object.
* Click the *Add* icon (+) to assign a set of privileges.
* Select the name of the role from the drop-down listbox in the *Grantee* field.
* Click inside the *Privileges* field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user. If privileges have previously been granted on a database object, unchecking a privilege for a group or user will result in revoking that privilege.
* If enabled, select the name of the role from the drop-down listbox in the *Grantor* field. The default grantor is the owner of the database.
* Click the *Add* icon (+) to assign a set of privileges to another role; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the *Delete Row* dialog.
* Click inside the *Privileges* field. Check the boxes to the left of one or
more privileges to grant the selected privileges to the specified user. If
privileges have previously been granted on a database object, unchecking a
privilege for a group or user will result in revoking that privilege.
* If enabled, select the name of the role from the drop-down listbox in the
*Grantor* field. The default grantor is the owner of the database.
* Click the *Add* icon (+) to assign a set of privileges to another role; to
discard a privilege, click the trash icon to the left of the row and confirm
deletion in the *Delete Row* dialog.
For more information about granting privileges on database objects, see the `PostgreSQL core documentation <http://www.postgresql.org/docs/9.5/static/sql-grant.html>`_.
For more information about granting privileges on database objects, see the
`PostgreSQL core documentation <https://www.postgresql.org/docs/current/sql-grant.html>`_.
Click the *Next* button to continue, the *Back* button to select or deselect additional database objects, or the *Cancel* button to close the wizard without modifying privileges.
Click the *Next* button to continue, the *Back* button to select or deselect
additional database objects, or the *Cancel* button to close the wizard without
modifying privileges.
Your entries in the *Grant Wizard* tool generate a SQL command; you can review the command in the *Final (Review Selection) (step 3 of 3)* window (see an example below).
Your entries in the *Grant Wizard* tool generate a SQL command; you can review
the command in the *Final (Review Selection) (step 3 of 3)* window (see an
example below).
**Example**
Example
*******
The following is an example of the sql command generated by user selections in the *Grant Wizard* tool:
The following is an example of the sql command generated by user selections in
the *Grant Wizard* tool:
.. image:: images/grant_wizard_step3.png
:alt: Grant wizard step three page
:align: center
The commands displayed assign a role named *Bob* *INSERT* and *UPDATE* privileges *WITH GRANT OPTION* on the *sales_meetings* and the *sales_territories* tables.
The commands displayed assign a role named *Bob* *INSERT* and *UPDATE*
privileges *WITH GRANT OPTION* on the *sales_meetings* and the
*sales_territories* tables.
* Click the *Back* button to select or deselect additional database objects, roles and privileges.
* Click the *Back* button to select or deselect additional database objects,
roles and privileges.
* Click the *Cancel* button to exit without saving work.
* Click the *Finish* button to save selections and exit the wizard.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 26 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 36 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 44 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 58 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 44 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 KiB

After

Width:  |  Height:  |  Size: 299 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 46 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 48 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 166 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 50 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 35 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 39 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 47 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 30 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 31 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 34 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 28 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 21 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Regular → Executable
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 48 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 23 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Loaded 100 of 3418 files, more files were not shown because too many files have changed in this diff. Show more