Compare commits

...
436 Commits
Author SHA1 Message Date
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
Dave Page 9c7a9305aa Fix licence attachment on Mac DMG file. 2016-10-24 17:18:12 +01:00
Dave Page 517a85866b Update version number for release. 2016-10-24 16:30:37 +01:00
Dave Page b346814534 Improve the documentation for desktop and server mode configuration. Note what different config files are user for, and give an example of paths to override when setting up server mode. 2016-10-24 14:02:50 +01:00
Dave Page c1c2fb9df9 Ensure sequence start value is shown in SQL and properties list. Fixes #1155 2016-10-24 09:27:16 +01:00
Surinder Kumar 19bd021696 Ensure select2 instances have a destroy property before calling destroy. 2016-10-21 16:16:10 +01:00
Harshal Dhumal 2952faab5e Fix exclusion constraint support on 9.6. Fixes #1875 2016-10-21 16:14:19 +01:00
Surinder Kumar 23a0fc2f22 Fix refreshing of FTS Dictionaries. Fixes #1837 2016-10-21 16:07:45 +01:00
Dave Page ef0d26c294 Ensure steps and schedules can be created in empty jobs. Fixes #1878 2016-10-21 16:00:23 +01:00
Murtuza Zabuawala e6d018c44f Ensure we handle external processes that fail to start. Fixes #1679 2016-10-21 15:35:06 +01:00
Surinder Kumar 8e9108e0f3 Allow package bodies to be dropped. Fixes #1867 2016-10-21 15:24:11 +01:00
Khushboo Vashi a97d21cc90 Ensure preferences values are stored properly. Fixes #1877 2016-10-21 15:06:45 +01:00
Khushboo Vashi 5a1795e4a0 Fix quoting of objects names for external utilities. Fixes #1603, fixes #1220, fixes #1221 2016-10-21 14:57:19 +01:00
Harshal Dhumal aef508ff91 Properly quote type names in RE-SQL for tables. Fixes #1863 2016-10-21 14:43:57 +01:00
Surinder Kumar da3a37ab19 Handle non-ascii responses from the server when connecting. Fixes #1822 2016-10-21 14:32:25 +01:00
Surinder Kumar 1e66119ef5 Ensure the File Manager honours the file type while traversing the directories. Fixes #1858
When a File Manager is closed by clicking cancel button. Its dom element not destroyed.. So on traversing into directories, when it tries to get currently selected file type, it looks into the dom element but it gets dom of previous dialogs not of currently dialog.

Now whenever an instance of File Manager is closed. its dom elements are also destroyed.
2016-10-21 14:26:12 +01:00
Surinder Kumar 406dab069d Show security labels in the reverse engineered SQL for domains. Fixes #1574 2016-10-21 12:49:50 +01:00
Surinder Kumar d806a9ce9e Fix the file manager when used under Python 3. Fixes #1872
Issues fixed:

1) In Python 3, parameter "cmp" is removed from sorted method. So File Manager won't open.
As we are sorting data on JS side using Natural sort, so on server side sorting is not required.

2) Improvement in Exception handling.
2016-10-21 12:43:02 +01:00
Murtuza Zabuawala d29ccea299 Don't allow setting of security labels on edbspl stored procedures (by correctly checking the node type). Fixes #1576 2016-10-21 12:37:47 +01:00
Navnath Gadakh 1908e86d22 Resolve a PG 9.6 compatibility issue in the regression test for Languages. 2016-10-21 12:24:26 +01:00
Surinder Kumar 48ee8490f0 Add new indexes to the correct parent on the treeview. Fixes #1880 2016-10-21 12:12:37 +01:00
Surinder Kumar 06039320b9 Don't specify ASC/DESC options for index types that don't support them. Fixes #1840 2016-10-21 12:08:41 +01:00
Harshal Dhumal 6874a1a247 Properly generate exclusion constraint SQL. Fixes #1861 2016-10-21 12:04:30 +01:00
Surinder Kumar 9155c2111f Ensure the grant wizard works with objects with special characters in the name. Fixes #1599 2016-10-21 11:58:46 +01:00
Akshay Joshi 76fb831554 Fixed issue where some parameter like 'Volatility, LeakProof , Variables etc..' not visible in SQL definition for functions and trigger functions. 2016-10-20 19:07:51 +05:30
Dan Vianello 6c5d81b6f5 Fixes #1843 Function definition does not match value returned from pg_get_functiondef() 2016-10-20 18:30:43 +05:30
Ashesh Vashi d4c439d64a Ensure the auto-generated CSRF_SESSION_KEY, SECRET_KEY,
SECURITY_PASSWORD_SALT keys are decoded as string for python 3
compatibility.

Fixes #1871
2016-10-20 13:16:31 +05:30
Sandeep Thakkar a1c0042a1e Use config_distro.py for all settings, and don't create/overwrite config_local.py. Partly fixes #1849 2016-10-19 14:10:28 +01:00
Ashesh Vashi 19df1e3f4b Ensure SECURITY_PASSWORD_SALT is set to something when initialising (to avoid errors, prior to being set to the 'real' value). Fixes #1871 2016-10-19 14:04:07 +01:00
Ashesh Vashi b17eb15742 Resolved - Integer type of preferences are not updated
Reason: IntegerControl assumes the model, passed to it, would always has errorModel variable set properly.

In order to resolve it, now using pgBrowser.DataModel instead of Backbone.Model, which initialize the errorModel by default.

Fixes #1868
2016-10-19 16:18:22 +05:30
Dave Page bc5cc964a3 Move security keys into the SQLite database, and auto-generate them.
This avoids packagers having to deal with the issue, which can be
difficult if they need to cater for both server and desktop modes.

Fixes #1849
2016-10-19 09:22:38 +01:00
Priyanka Shendge c4f1b8eb11 Add tests for Languages 2016-10-18 14:36:25 +01:00
Dave Page 62a35f24e7 Fix layout of DateTimePicker control help message. Fixes #1864 2016-10-18 12:43:58 +01:00
Murtuza Zabuawala b9571df4de Don't append new objects to the wrong parent, if the correct one isn't loaded. Fixes #1838 2016-10-18 12:37:44 +01:00
Navnath Gadakh e31ba5873b Add regression tests for resource groups on EPAS. 2016-10-18 12:01:01 +01:00
Dave Page 8d2dff1482 Always create databases from template0 when running regression tests, to ensure consistency and avoid concurrency issues. 2016-10-18 11:57:31 +01:00
Surinder Kumar df09f02e80 List files/folders alphabetically, and don't excessively truncate their names. Fixes #1792 2016-10-18 11:39:12 +01:00
Surinder Kumar 11e486f96d Fix unsafe schema lookups for types. Fixes #1728 2016-10-18 11:32:43 +01:00
Dave Page 345ce1b6d2 Fix attribute check. 2016-10-15 16:48:52 -07:00
Dave Page 056ed21148 Allow test servers to be enabled or disabled easily in the config 2016-10-15 08:44:40 -07:00
Dave Page d0a9b25c57 Cleanup the dashboard tables a little for readability 2016-10-14 17:42:29 -07:00
Dave Page faf517e12b Include wait information on the activity tab of the dashboards. Fixes #1859 2016-10-14 17:18:17 -07:00
Surinder Kumar dd6a69d845 Handle reverse engineering of synonyms with / in the name. Fixes #1622 2016-10-14 16:01:55 -07:00
Akshay Joshi 2d39b5fb41 Identify the collation correctly when reverse engineering table SQL. Fixes #1847 2016-10-14 15:57:55 -07:00
Surinder Kumar c7520cf86d Allow refreshing of synonym nodes. Fixes #1845 2016-10-14 15:50:20 -07:00
Surinder Kumar 17bd379cb6 Properly quote names when renaming FTS dictionaries and templates. Fixes #1857 2016-10-14 12:23:10 -07:00
Surinder Kumar 7f507f294e While clicking on Select2 control, it tries to destroy the control and thus it doesn't get this object sometimes and throws error.
It should attempt to destroy the select2 object only if this object is not undefined.
2016-10-14 12:20:29 -07:00
Surinder Kumar 0df968f679 Resolve issue with properties refreshing. Fixes #1728
1) If we create/update a node with non-default schema, It should return selected schema id in return response. but default schema id is returned every time due to which it throws error in properties panel.
Fixed in Domains, Collation, Types, Views & Table node.

2) Incorrect parent id of object node is returned from nodes method due to which wrong parent id is passed while updating object and
thus node didn't get refreshed.
Fixed in FTS Configuration, FTS Parser nodes.
2016-10-14 12:19:00 -07:00
Navnath Gadakh 404d4efd2e Add test cases for tables, types, views and their children. 2016-10-14 11:20:51 -07:00
Priyanka Shendge 22dadacb0f Add terst cases for packages, and update Synonym cases for recent API changes. 2016-10-14 10:59:36 -07:00
Dave Page f089744d6d Ignore patches and autosave files from QT Creator 2016-10-13 06:59:23 -07:00
Priyanka Shendge 540c389d92 Add regression tests for Foreignb Tables. 2016-10-13 06:57:16 -07:00
Priyanka Shendge 8b91babdc2 Add regression tests for FTS nodes. 2016-10-13 06:54:23 -07:00
Navnath Gadakh 36c185e9dc Fix regression test import issue. 2016-10-13 06:49:33 -07:00
Chris Mayo c2cd2d3d3b Clarify that patches should be sent as attachments. 2016-10-11 13:57:42 -07:00
Harshal Dhumal 713c692ddd Fix View privilege management. Fixes #1531
1. Fixed update privileges for views and materialized views.
2. Apart from this fixed wrong sql for privilege update.
3. Fixed: Error message was not got cleared even after removing entry with error on privilege tab.
2016-10-10 09:42:22 +01:00
Chris Mayo 5ac2cceac7 Fix mailto links and link to code_review doc. 2016-10-10 09:32:20 +01:00
Dave Page 148808a17b Fix label 2016-10-07 14:15:18 +01:00
Navnath Gadakh ae612f5403 Major update to the test suite:
1. Code changes (due to drop objects functionality).
2. Quoting for database names in drop databases.
3. Code changes for import errors for pickle_path and advanced_config variables.
2016-10-07 13:59:43 +01:00
Dave Page 50658808d9 Ensure variable is defined before use. 2016-10-07 13:59:10 +01:00
Khushboo Vashi 50859f8369 Correctly identify server type upon first connection. Fixes #1785 2016-10-07 12:57:36 +01:00
Neel Patel 4e86345c28 Allow debugging of functions and procedures in packages on EPAS. Fixes #1577 2016-10-07 12:46:34 +01:00
Surinder Kumar 3963272523 Don't show Upload File icon unless it is in capabilities list [Storage Manager]. Fixes #1739
Issue:
When clicked on upload icon while saving a file prompt user to leave page. It is because the icon is a button and its type is set to submit which makes it to prompt, instead it should be 'button'

Storage Manager's menu items depends on capabilities list set by the module using it. If capabilities doesn't have 'upload' in it, It won't work. Upload button is bound to click event only when it is in capabilities.

Solution:
As upload button is being added only when it is in capabilities, so upload button html is removed from html file. It will not shown on UI untill it is in capabilities list.
2016-10-07 12:31:38 +01:00
Murtuza Zabuawala c931d715ac Fix refresh of Synonyms. Fixes #1611 2016-10-07 12:08:19 +01:00
Dave Page a0aaa80029 Allow users to choose SELECT permissions for sequences in the Grant Wizard. Fixes #1835 2016-10-06 10:02:21 +01:00
Dave Page f9320811d7 Allow users to choose SELECT permissions for tables in the Grant Wizard. Fixes #1835 2016-10-06 09:56:44 +01:00
Murtuza Zabuawala bde3dd845b Fix SSL setup. Fixes #1817 2016-10-05 13:05:10 +01:00
Susan Douglas 8b2832bbc7 pgAgent docs. Fixes #1824 2016-10-04 14:48:57 +01:00
Dave Page 9893b1bee4 Attempt to sign the Windows installer, failing with a warning if there's no cert available. Fixes #1823 2016-10-04 14:34:08 +01:00
Justin Clift 3e743ad582 Minor fixes to the Mac appbundle build 2016-10-04 13:51:28 +01:00
Justin Clift 6458e4cafb Optionally sign both the Mac app bundle and the disk image. Fixes #1821 2016-10-04 12:51:14 +01:00
Ashesh Vashi e52aeecd20 Fixes# 1808 - Invalid date-time format was used in the Start/End time
for Job Schedule.

Thanks Susan for the report.
2016-10-04 10:18:37 +05:30
Dave Page df64108708 Fix pip wheel production status. 2016-10-03 16:42:36 +01:00
Dave Page fc9c4736c4 Fix python 3 compatibility 2016-10-03 16:37:20 +01:00
Dave Page d4af70aeb9 Label corrections. 2016-10-03 14:20:04 +01:00
Susan Douglas ead15018c2 First cut of the pgAgent docs. 2016-10-03 14:11:31 +01:00
Surinder Kumar e4d870cbe6 Ensure errorModel unset property properly in while adding a new server. Fixes #1786 2016-10-03 13:50:54 +01:00
Dave Page a91f19a21d Fix typo. Fixes #1596 2016-09-30 10:36:39 +01:00
Dave Page 49ee8abb72 Fix typo 2016-09-30 09:45:14 +01:00
Dave Page 66ba4575b1 Remove TODO list (use Redmine instead). 2016-09-27 12:43:23 +01:00
Dave Page 8db21345e1 Update README 2016-09-27 12:41:29 +01:00
Dave Page 30397476da Don't munge the windows installer filename if there's no app suffix. 2016-09-26 16:52:50 +01:00
Dave Page 7175929cab Ensure that the directory paths are as they should be under the runtime. Note that this change requires (for now) the regression tests to be run from the web/regression directory. 2016-09-26 16:38:27 +01:00
Dave Page e06fd21f3c Bump version for release 2016-09-26 16:16:13 +01:00
Dave Page 6790f14c6c Fix button label and colour 2016-09-26 16:10:00 +01:00
Dave Page 0ba2f46092 Update message catalogs 2016-09-26 15:57:03 +01:00
Ashesh Vashi 09c2d605c9 Prevent bigints getting rounded. Fixes #1547 2016-09-26 15:51:01 +01:00
Surinder Kumar 3b4776ab5f Improve network/server activity feedback for the user. Fixes #1751 2016-09-26 15:10:38 +01:00
Dave Page f9dacc5237 Fix label cpaitalisation 2016-09-26 15:04:47 +01:00
Surinder Kumar 0ae719dae0 Do not try to set in_recovery, is_replay_paused properties in the server
object, when data is not available.
2016-09-26 19:16:06 +05:30
Dave Page d077626cdc Improve layout of regression test format 2016-09-26 14:16:04 +01:00
Navnath Gadakh a4aae4c245 Update role and tablespace tests to cleanup properly following a failure. 2016-09-26 14:02:59 +01:00
Murtuza Zabuawala a0a6428e86 Ensure compatibility with newer sqlparse modules. Fixes #1725 2016-09-26 13:49:54 +01:00
Ashesh Vashi e591c6b5c0 pgAgent misc fixes:
1. When an existing schedule updated, or a new schedule is added from a pgAgent job dialog, it was not able to generate the proper update SQL Query.
2. The SubNodeCollectionControl was not removing the grid, when it is being getting removed.
2016-09-26 13:43:13 +01:00
Ashesh Vashi 237bfd4882 pgAgent - add modules for jobs, steps and schedules. Fixes #1341 2016-09-26 12:04:10 +01:00
Dave Page 7f3ca548cd Fix SQL box sizing. 2016-09-26 11:35:11 +01:00
Ashesh Vashi 912eebb583 Fix view creation. Fixes #1736 2016-09-26 11:00:18 +01:00
Dave Page f51d8c72ef Fix validation message 2016-09-26 10:57:16 +01:00
Ashesh Vashi 0bf48d06fb Ensure the view data filter box is usable. Fixes #1733 2016-09-26 10:50:09 +01:00
Dave Page 2d222067b9 Fix layout of the filter box. 2016-09-26 10:48:31 +01:00
Ashesh Vashi 6999249dcd Ensure the default schema is set when creating objects. Fixes #1735 2016-09-26 10:15:23 +01:00
Ashesh Vashi b80cd43ae6 Misc changes
- Setting the CodeMirror height when panel is resized, which you had mentioned.
- Added a new CellEditor (DatetimePickerEditor) for datetime picker.
2016-09-26 10:04:49 +01:00
Ashesh Vashi 1c623c56e7 Fixes#1737 - Setting the schedma-id as the pid (parent-id) for the
sequences node instead of the server-id.

Due to this - during updating the sequence node, it was not able to find
out the correct parent node, and it was updating the existing node, but
- later it (considering the old node) was removed by the replace logic.
2016-09-24 14:25:16 +05:30
Murtuza Zabuawala 5c855234f8 Ensure we go back to the login page after logging out, when installed at a virtual root. Fixes #1691 2016-09-23 13:10:48 +01:00
Ashesh Vashi 8797b3f3bf Change rolvaliduntil format to "YYYY-MM-DD HH:mm:ss Z" for consistency with the rest of the app. 2016-09-23 10:10:31 +01:00
Murtuza Zabuawala f18c455411 Don't offer CREATE Script options on servers or server groups. Fixes #1578 2016-09-23 10:06:50 +01:00
Susan Douglas e959c68358 Image updates 2016-09-22 15:59:54 +01:00
Ashesh Vashi 163ae4d53d Misc fixes and additions for pgAgent support:
- Added DatetimepickerControl, MomentCell (using moment.js)
- Used the 'DatetimepickerControl' in Role (Also - resolved an issue, when unset the datetime for 'Valid Until'.)
- Added a 'Select All/Unselect All' adaptor for Select2 used by pgAgent nodes.
- Fixed an issue with SubNodeCollectionControl, which was not starting the modification session of the child model, when created default value for collection is not null/undefined. And, hence - validation on the child model was not working.
- Fixed a memory leak with SqlFieldControl, and SqlTabControl, which was not releasing the CodeMirror properly.
2016-09-22 15:27:59 +01:00
Murtuza Zabuawala a113b43a1f Add Packages as a synonym target type. Fixes #1611 2016-09-22 14:56:00 +01:00
Dave Page 821f70663e Fix default zoom setting. 2016-09-22 14:43:32 +01:00
Murtuza Zabuawala f48f806657 Fix stats on PG 9.6. Fixes #1719 2016-09-22 14:17:47 +01:00
Murtuza Zabuawala 9a56fb552c Ensure the favicon can be found. Fixes #1692 2016-09-22 13:07:07 +01:00
Navnath Gadakh 1cb5a7c7ca Update regression tests to resolve issues where database/connections were getting mixed up. 2016-09-22 12:58:38 +01:00
Harshal Dhumal f117685d77 Drop all connections from the connection manager when a server is dropped to avoid issues if sqlite reuses an ID. Fixes #1720 2016-09-22 12:57:52 +01:00
Dave Page 0ba414f0ab Document keyboard shortcuts. Fixes #1727 2016-09-22 12:42:06 +01:00
Dave Page 8c913f5773 Allow zooming in the runtime with Ctrl/Cmd+Plus and Ctrl/Cmd+Minus. Fixes #1726 2016-09-22 12:37:38 +01:00
Dave Page e909429da7 Fix title syntax. 2016-09-22 12:30:01 +01:00
Dave Page 2077bd5fdc Prevent browsers caching responses. Fixes #1171 2016-09-21 16:18:22 +01:00
Dave Page 7a40171300 Handle nested JSON correctly in SlickGrid. Fixes #1713. Fixes #1404 2016-09-21 13:43:27 +01:00
Surinder Kumar 28ce31a022 Save error details when executing to CSV, if no data is returned. This ensures the user gets some feedback rather than nothing at all. Fixes #1592 2016-09-20 11:57:51 +01:00
Murtuza Zabuawala f991354f9a Handle composite type return values properly in the debugger. Fixes #1662 2016-09-20 11:27:51 +01:00
Surinder Kumar febb1b80b1 Ensure items are properly added to the treeview when their parent has no pre-existing children. Fixes #1627 2016-09-20 11:18:07 +01:00
Ashesh Vashi 7ab0eb158f Ensure jQuery is loaded before SlickGrid. Fixes #1712
Patch by Ashesh with contributions from Surinder.
2016-09-19 17:08:57 +01:00
Navnath Gadakh c84fd83595 Enhanced summary output for the test suite. 2016-09-19 16:49:06 +01:00
Murtuza Zabuawala 881d2a60a4 Fix an exception that could occur when the browser pings the server following a restart. Fixes #1707 2016-09-19 15:57:52 +01:00
Murtuza Zabuawala 2440f89a71 Fix an issue where the edit icon vanished and the default tab wasn't shown when advanced-editing a column in the table dialogue. Fixes #1704 2016-09-19 15:37:04 +01:00
Surinder Kumar cc0cb83277 Resolve a syntax error when updating packages with no body. Fixes #1588 2016-09-19 15:33:19 +01:00
Murtuza Zabuawala 82d63804c1 Resolve a refresh issue when updating packages. Fixes #1625 2016-09-19 09:41:13 +01:00
Murtuza Zabuawala fc5ce22de9 Allow creation of objects in schemas with special chars in the name. Fixes #1598
This was caused through generation of SQL based on HTML-escaped labels, not the raw versions.
2016-09-16 17:02:57 +01:00
Murtuza Zabuawala c044af9585 Bulk delete rows in SlickGrid. Fixes #1696 2016-09-16 16:46:58 +01:00
Murtuza Zabuawala c5f04d03c6 Fix an issue where several default privileges cause error on database. Fixes #1670 2016-09-16 16:06:29 +01:00
Surinder Kumar 92bc312d2d Fix updating of matview definitions. Fixes #1595 2016-09-16 15:41:07 +01:00
Magnus Hagander ce20dbc25a Add classid filter to queries on pg_depend. Fixes #1705
There are a number of cases where queries in both pgadmin4 and pgadmin3 are done against pg_depend but falis to constrain the query on classid.

In particular, if for example a constraint and a sequence exists with the same oid (which is perfectly valid, as they are in different tables), a column will suddenly refer sequences that are completely incorrect. When we look up sequences, we have to make sure we only match dependencies against pg_class.
2016-09-16 11:24:54 +01:00
Susan Douglas 3f98e6c207 Documentation update 2016-09-16 11:14:49 +01:00
Surinder Kumar 165b93a968 Fix a syntax error when creating a trigger function on PPAS 9.5+. Fixes #1600 2016-09-16 11:12:41 +01:00
Surinder Kumar 1ce5b38f4a Fix an issue when changing the length of a column in the table dialogue. Fixes #1669 2016-09-16 11:09:13 +01:00
Ashesh Vashi 2f32427c59 Fix an issue in the Query Tool which causes it to hang in some installations of Chrome 53.0.2785.116 on Mac.
This commit also modifies the Query Tool to load SlickGrid using require.js.
2016-09-16 10:18:49 +01:00
Surinder Kumar 016de5dc88 Fix scrolling in the query tool editor. Fixes #1579 2016-09-15 10:15:00 +01:00
Ashesh Vashi c48e8d415b The Switch Dependency Cell, implemented in schema module, has a special
case. Its purpose is now to handle certain scinarios specific to table
children modules.

Renamed it to 'TableChildSwitchCell' from 'SwitchDepCell' to avoid any
conflict in future.
2016-09-15 13:36:56 +05:30
Navnath Gadakh d3d8836f61 Introduce a test config database for the regression tests, and track/remove objects that are created during testing. 2016-09-14 16:26:12 +01:00
Murtuza Zabuawala 3807ba047b Don't have the query tool try to load arrow_right_spearmint.png. Fixes #1693 2016-09-14 16:12:49 +01:00
Dave Page fcc81d32cc Fix condition check for avoiding sorting of columns. 2016-09-14 12:33:54 +01:00
Murtuza Zabuawala db7b8a8fa5 Don't disable the save button when executing a query in the query tool. Fixes #1695 2016-09-14 11:22:54 +01:00
Surinder Kumar 3035ae13df Fix CMD+V (Paste) in the Mac runtime. Finally fixes #1478 2016-09-14 11:17:34 +01:00
Murtuza Zabuawala 4ba8f4830b Don't sort columns (tables, views, matviews, catalogs etc) on the treeview by name, but by ordinal. Fixes #1687 2016-09-14 11:13:50 +01:00
Surinder Kumar 2ee631d6fc Remove blank lines in the formatting of SELECT scripts for functions. Fixes #1690 2016-09-14 11:08:10 +01:00
Surinder Kumar f2469d113c Fix function signature generation for reverse engineered SQL. Fixes #1674
1) In SQL pane, the signature in comments had arguments with name and type, Now it will show arguments with type only.

2) There is no indent+newline between arguments (there isn't even a space). - Fixed

3) The default value for the last argument is omitted. - Fixed
Last argument is omitted because the value for the last argument we got from table is empty.
Now we form function signature in the get_definition.sql using 'pg_catalog.pg_get_function_arguments' method.

Above changes will reflect in Functions, Procedures & Trigger function Nodes.
2016-09-14 10:59:11 +01:00
Murtuza Zabuawala 751327eacc Ensure View Data on a table with zero columns doesn't throw an error. Fixes #1677 2016-09-14 10:43:08 +01:00
Murtuza Zabuawala 046f6dd442 Fix creation of DO INSTEAD rules. Fixes #1681 2016-09-14 10:39:16 +01:00
Murtuza Zabuawala a67c4fc1dc Fix a typo in the error handling in the browser that caused some errors to be reported to the console only. 2016-09-14 10:33:41 +01:00
Murtuza Zabuawala 071b609a44 Fix error when refreshing table node. Fixes #1686 2016-09-14 10:30:02 +01:00
Dave Page d848e9cefe Use SSL when loading Gravatar icons. Fixes #1694 2016-09-13 13:39:26 +01:00
Surinder Kumar f2ed6fa4dd Fix function signature generation. Fixes #1683 2016-09-12 15:20:46 +01:00
Murtuza Zabuawala ffc58b74d2 Allow viewing of long data values in the grid. Fixes #1672 2016-09-12 12:39:40 +01:00
Surinder Kumar 28b7a033bc Prevent creation of packages and rules in catalogs. Fixes #1682 2016-09-12 11:37:25 +01:00
Dave Page 70ea03a872 Add click as a python requirement. 2016-09-12 09:20:27 +01:00
Surinder Kumar 7cfcf14312 Move the declaration of a variable into the correct scope. 2016-09-09 14:50:51 +01:00
Murtuza Zabuawala 42e19d2169 Fix error highlighting, broken in d6391c7e9b. Fixes #1676 2016-09-09 14:45:03 +01:00
Murtuza Zabuawala 982c291a31 Confirm loss of changes with the user before clearing the query or history, or opening a new file in the Query Tool. Fixes #1666 2016-09-08 09:12:48 +01:00
Surinder Kumar f13de8b86b Ensure the query tool editor has focus when the tab is selected or when first shown so the user can immediately type/execute. Fixes #1581 2016-09-07 16:20:47 +01:00
Murtuza Zabuawala 35d3c396de Fix SQL generation for functions that return SETOF ... Fixes #1631 2016-09-07 14:53:22 +01:00
Surinder Kumar da21cabb1e Fix typo in connection handler. 2016-09-07 14:01:56 +01:00
Dave Page bd139bc83e Improve binary path settings hint. 2016-09-07 09:54:54 +01:00
Ashesh Vashi 2540e9687f Fixed some of the javascript syntax in menu.js 2016-09-06 23:20:38 +05:30
Ashesh Vashi aeaa4bcad1 Add an object in an parent properly, which was expanded earlier, and do
not have any child withing it.

Fixes #1481, #1627.
2016-09-06 23:20:38 +05:30
Murtuza Zabuawala 679ad6fca8 Support range types in the query tool. Fixes #1658 2016-09-06 14:26:43 +01:00
Murtuza Zabuawala 1b75679ec4 Python 2.6 fixes. Fixes #1636. Fixes #1659 2016-09-06 14:07:30 +01:00
Ashesh Vashi 8ac65070bc Improve the logic for Bad handling of missing connection database server RM #1387 2016-09-06 15:35:20 +05:30
Murtuza Zabuawala 8b61aa49d0 Warn the user about unsaved changes to SQL or data before closing the query tool. Fixes #1661 2016-09-05 17:18:43 +01:00
Surinder Kumar 3dace5ff22 Fix file navigator to properly show drives in Windows. Fixes #1665 2016-09-05 17:07:07 +01:00
Dave Page cd3b938179 Tweak splash screen image 2016-09-05 16:55:34 +01:00
Dave Page 1ce74fb8b1 Add a simple splash screen 2016-09-05 16:45:01 +01:00
Murtuza Zabuawala 15df12c924 Highlight invalid rows when saving data in the edit grid. Fixes #1637 2016-09-02 16:05:00 +01:00
Susan Douglas e810679592 Doc updates. 2016-09-02 15:50:17 +01:00
Susan Douglas da948a754b Doc updates. 2016-09-02 15:27:10 +01:00
Murtuza Zabuawala f3f7413701 Use ISO formatted dates when setting rolvaluntil. Fixes #1153 2016-09-02 15:24:34 +01:00
Dave Page 842d078142 Ensure the Mac package can find all the Python modules it needs, now that
PYTHONHOME is cleared for safety.
2016-09-02 15:19:54 +01:00
Murtuza Zabuawala 087332f32e Fix the boolean editor, and warn the user if there are unsaved changed in the edit grid before refreshing. 2016-09-01 11:50:48 +01:00
Susan Douglas fca331acb6 Updated screenshots. 2016-08-31 13:04:25 +01:00
Neel Patel 8dca4b0e0b Fixed an syntantical issue, which was not supported by QtWebkit.
The issue was regression of the patch for the 'SlickGrid'.

Fixes #1621
2016-08-30 14:43:50 +05:30
Ashesh Vashi f7dd8cbab4 Bump version for RC1 release 2016-08-29 20:37:44 +05:30
Murtuza Zabuawala c56e4667df SlickGrid Integration in to query tool. Fixes #1618 2016-08-29 20:17:01 +05:30
Murtuza Zabuawala 689ef8d8d1 Fixes issues specific to SYNONYMS
- On droping a synonyms - the query should be modified in SQL pane.
- A proper message should be given on trying to drop an already dropped
  synonyms.
- Handle the synonyms with special characters.

Fixes #1607, #1608, #1609
2016-08-29 20:25:18 +05:30
Ashesh Vashi b6f307256b Sorting the data during tree data loading using the natural sort
algorithm.

This patch takes care of:
* Consistent behaviour during create, update operation on any node.
  - It should return the node data during creating a new object, or
    updating the existing one.
* Now that - we have consistent behaviour during these operations, we
  can consistently move, update the tree item based the node data from
  the server.
* Implemented the methods for each node to get the information about
  that particular node only.
* Using the above changes to implement the 'refresh' operation on tree
  node properly.

I must thank Surinder, and Harshal for helping me implement the 'node'
method, and also changed the behaviour of create & update methods to
return the node data for most of the nodes.

Fixes #1244
2016-08-29 20:06:58 +05:30
Neel Patel 2c6f6609bc Debugger listener starting error displayed if user try to debug plpgsql cs_fmt_browser_version function that contains parameters. Fixes #1238 2016-08-29 13:47:15 +05:30
Neel Patel f5249f2e18 Set break point option should present in pgAdmin4 for trigger. Fixes #1226 2016-08-29 13:43:43 +05:30
Surinder Kumar 2d75eac117 SqlFieldControl enhancements 2016-08-29 13:21:45 +05:30
Ashesh Vashi f12d981a9d Handling the bad/lost connection of a database server.
Made backend changes for:
* Taking care of the connection status in the psycopg2 driver. And, when
  the connection is lost, it throws a exception with 503 http status
  message, and connection lost information in it.
* Allowing the flask application to propagate the exceptions even in the
  release mode.
* Utilising the existing password (while reconnection, if not
  disconnected explicitly).
* Introduced a new ajax response message 'service_unavailable' (http
  status code: 503), which suggests temporary service unavailable.

Client (front-end) changes:
* To handle the connection lost of a database server for different
  operations by generating proper events, and handle them properly.

Removed the connection status check code from different nodes, so that
- it generates the proper exception, when accessing the non-alive
  connection.

Fixes #1387
2016-08-29 12:01:35 +05:30
Akshay Joshi 1b05464a04 Getting 'AttributeError' in pgadmin4/web/pgadmin/browser/server_groups/servers/__init__.py. Fixes #1464 2016-08-26 14:25:33 +05:30
Murtuza Zabuawala 5a78dd7ad3 Implemented Synonym node for EPAS 2016-08-26 13:01:57 +05:30
Akshay Joshi 7b72448ec9 Internal sever error displayed if create New user mapping with public user. Fixes #1468 2016-08-26 11:23:15 +05:30
Murtuza Zabuawala 05473a7a35 domain node: id and pid is not being generated. Fixes #1586 2016-08-25 14:07:04 +05:30
Akshay Joshi e016869ad5 Trigger issues through right click. Fixes #1209 2016-08-24 12:10:54 +05:30
Murtuza Zabuawala 8d7b840e7e Fix startup navigation message. 2016-08-23 12:41:41 +01:00
Priyanka Shendge a535eddfcd Add schema and database child node regression tests. 2016-08-23 11:50:41 +01:00
Dave Page 0ce8b031f8 More sensible defaults for the mail server settings. 2016-08-23 11:41:45 +01:00
Ashesh Vashi 6775adc4c7 Cleanup old code in server_groups.js. Fixes #1247 2016-08-23 09:32:10 +05:30
Harshal Dhumal 58a79e4fc6 Fix parsing issue in packages. 2016-08-22 16:49:32 +01:00
Harshal Dhumal cf1be2a320 Add support for Packages on EPAS. 2016-08-22 12:30:16 +01:00
Surinder Kumar fe54a124da Don't offer to create resource groups on disconnected servers. Fixes #1569 2016-08-22 12:21:33 +01:00
Surinder Kumar 4c2020cdc7 Allow the use of the tab key to select options in combo boxes. Fixes #1251 2016-08-22 12:18:38 +01:00
Surinder Kumar 5690dfda16 Allow template databases to be used when creating new databases. Fixes #1570 2016-08-19 16:35:42 +01:00
Dave Page d5f6c63ead More string tweaks. 2016-08-19 11:48:34 +01:00
Surinder Kumar 761b54ce69 Allow the user to configure tabs in the SQL editor. Fixes #1406 2016-08-19 11:40:19 +01:00
Dave Page 0f99c3b60c Clarify font sizing description. 2016-08-19 11:23:07 +01:00
Dave Page 80f1c2e7ac Correct the win-build directory in .gitignore. 2016-08-19 11:20:29 +01:00
Khushboo Vashi eca47efb03 Update MFizz font library. Fixes #1311 2016-08-19 11:17:42 +01:00
Dave Page 33b4817008 Ensure fractional sizes work for the SQL font. 2016-08-19 11:08:42 +01:00
Akshay Joshi 86858b18f6 Fix validation of numeric preference min/max values. Fixes #1567 2016-08-19 11:00:05 +01:00
Surinder Kumar d5b0cd29d8 Display full text from backgrid cells that overflow in a tooltip. Fixes #1442 2016-08-19 10:54:13 +01:00
Akshay Joshi 7dffb020f1 Support CREATE LANGUAGE. Fixes #1252 2016-08-19 10:26:02 +01:00
Murtuza Zabuawala 013ff1090e Ensure PG/EPAS configuration warnings are shown appropriate for the server type. Fixes #1563 2016-08-18 17:18:20 +01:00
Murtuza Zabuawala d6391c7e9b Properly display messages from the server in the query tool. Fixes #1523 2016-08-18 17:08:40 +01:00
Akshay Joshi 2b1b60bc2b Reduce main menu height a little. Fixes #1453 2016-08-18 16:51:22 +01:00
Murtuza Zabuawala 8e0a61f556 Fixed typo in security labels macro Fixes #1457 2016-08-18 18:03:30 +05:30
Dave Page 050937a32a Fix WSGI support. 2016-08-18 13:43:00 +01:00
Neel Patel 48a50ce20b Give more useful error messages when unable to debug functions. Fixes #1224 2016-08-17 15:23:10 +01:00
Dave Page 6701bb191d String fix. 2016-08-17 15:10:33 +01:00
Harshal Dhumal 1056e9553f Show default database privileges in properties mode. Fixes #1538 2016-08-17 14:22:56 +01:00
Dave Page 91e3d3267f On reflection, don't allow the user to specify the unit when setting the SQL font size. Always use em's. 2016-08-17 13:45:52 +01:00
Dave Page b3f25cb4bb Allow customisation of the CodeMirror font size. Fixes #1565 2016-08-17 13:20:05 +01:00
Murtuza Zabuawala 9ec05d6bb1 Fix an issue where system level catalog are also displayed in PPAS server under relation of create new table like option. Fixes #1530 2016-08-16 16:29:50 +01:00
Murtuza Zabuawala c336e8a743 Fix an issue in foreign tables node where it was displaying catalog tables in inherits options causing internal server error. Fixes RM#1520 2016-08-16 15:44:44 +01:00
Dave Page 99b4a0fe5b Add unit tests for schemas, collations and trigger functions. 2016-08-16 12:54:02 +01:00
Surinder Kumar 67f481ab11 Prevent creation of FTS objects in catalogs. Fixes #1122 2016-08-16 12:49:19 +01:00
Surinder Kumar 6d839a2924 Prevent a query being executed whilst one is already in progress. Fixes #1532 2016-08-16 12:10:16 +01:00
Neel Patel a3e8ba93ae Ensure that argc/argv are set for the runtime interpretor, and that
PYTHONHOME is properly configured.
2016-08-16 11:29:42 +01:00
Akshay Joshi 035066bd41 Fix query tool button/menu inconsistencies. Fixes #1461 2016-08-09 16:23:24 +01:00
Navnath Gadakh 81e2bc1e80 Test suite enhancements:
1. The user will specify the tablespace path in test_config.json.in
2.  If tablespace path not found, skip the test cases for that server(Only tablespace test cases)
3.  Add the skipped test summary in the test result. (Now it's showing on console + in log file, but need to update in a final enhanced test summary report. Which is research point we will work on that after finishing all nodes API test cases)
4.  Removed the test_ prefix from the values in the config files.
5. Add tablespace and roles tests
2016-08-09 16:05:40 +01:00
Dave Page 2b13d55016 Add missing updates from the previous commit. 2016-08-09 12:17:02 +01:00
Akshay Joshi 9dfc7bff35 Add missing collection node child counts. Fixes #1250 2016-08-09 12:12:05 +01:00
Dave Page 33457e6a90 Update message catalog. 2016-08-08 16:51:03 +01:00
Dave Page 48384cd6cd Bump version. 2016-08-08 16:48:10 +01:00
Harshal Dhumal 8918b8894d Fixed privileges parsing issue while editing privileges of existing object. Fixes #1417 2016-08-08 16:31:57 +01:00
Dave Page a025c0ebf0 Missing comma. Sigh. 2016-08-08 15:39:06 +01:00
Dave Page 2aea97b798 Fix titles of help pages. 2016-08-08 15:30:24 +01:00
Surinder Kumar 1bcac0b67c Fix more of the funky keyboard shortcuts. 2016-08-08 15:26:37 +01:00
Neel Patel 37ca3579f3 Fix a JS error in the runtime caused by f78024808e (#1177) 2016-08-08 14:42:14 +01:00
Surinder Kumar 5900848842 Sequence related validation/fixes. Fixes #1119
1) Add proper validation checks for fields.
2) Fixed wrong sql generation due to incorrect conditions in template.
2016-08-08 12:47:20 +01:00
Surinder Kumar 7cf4ac2474 Fix RE-SQL for Trigger Functions which was missing an 'AS'. Fixes #1524 2016-08-08 12:17:54 +01:00
Harshal Dhumal f78024808e Prevent the user attempting to run external commands if the bin path is not configured. Fixes #1177 2016-08-08 11:59:37 +01:00
Khushboo Vashi 8e099e29c3 Fix various escaping issues. Fixes #1527 2016-08-05 12:20:00 +01:00
Surinder Kumar a43f053a10 Fix file upload in File Manager in pgAdmin4 Runtime. Fixes #1397 2016-08-04 16:34:30 +01:00
Khushboo Vashi b00e94e904 Fix drop trigger function, function and procedures. Fixes #1467 2016-08-04 15:24:03 +01:00
Surinder Kumar 42f8745aba Fix error running VACUUM FULL FREEZE ANALYZE VERBOSE. Fixes #1519 2016-08-04 12:13:34 +01:00
Harshal Dhumal cb35c46f03 Fix View Data options for tables with columns that need quoting. Fixes #1492 2016-08-04 11:54:36 +01:00
Murtuza Zabuawala 8c433fbfce Fix display of numerics in the query tool. Fixes #1463 2016-08-04 11:31:24 +01:00
Harshal Dhumal dfceb63986 Add save password option in sever create mode. Fixes #1450
Do a little string/layout cleanup whilst passing.
2016-08-03 15:55:45 +01:00
Khushboo Vashi 68497b00f6 Fix dropping of Domains. Fixes #1470 2016-08-03 15:44:24 +01:00
Harshal Dhumal de568b3021 Fix renaming of constraints from the table dialogue. Fixes #1500
1] datamodel.js: For collection type added check before adding model into "changed" list instead of adding it blindly.

2] Type casting from str to int of column properties like attlen, attpricision.

3] Added missing data formating when adding new column to existing table (from table edit mode).

4] Added more validation for Foreign key constraint.

5] Column.js: Column grid (in table edit mode) show proper disabled color for disabled cell when grid renders.

6] All constraints and index js added idattribute to distinguish which s/constraint or s/index is updated on server side.

7] Column update.sql: Fixed sql when altering column data type. The issue was when we alter data type from which has length and precision to data type which don't have these properties and vice versa.
For e.g. alter data type numeric(10,12) to real (and vice versa)

8] Renaming constraint (RM1500).

9] simplejson KeyError handing for Python 2.7.
2016-08-03 15:39:14 +01:00
Dave Page 5d52767ba7 Move the dashboard tab filters into a button bar, and add a refresh button. Fixes #1505 2016-08-03 13:39:32 +01:00
Dave Page 4f90a5d4f4 Move button bar related classes together. 2016-08-03 13:38:12 +01:00
Dave Page 1ec1e9663c Ignore the pickle. 2016-08-03 10:25:10 +01:00
Harshal Dhumal ec3b9bb15b Allow to create the foreign table with inherits options. Fixes #1260 2016-08-02 09:38:56 +05:30
Murtuza Zabuawala 01252a13cf Further misc quoting/encoding related fixes. 2016-08-01 15:23:06 +01:00
Akshay Joshi e1cc3dded2 Allow customisable delete confirmation messages in backgrid. 2016-08-01 15:18:57 +01:00
Dave Page 16304aafd2 s/buttton/button/g, per Anthony DeBarros. Fixes #1518 2016-08-01 15:16:14 +01:00
Surinder Kumar 9c4eed70b4 Use the same keyboard shortcuts in the query tool as pgAdmin 3. Refs #1478
Per discussion on the mailing list, the shortcuts override the browser defaults (where there are any), but only when the query tool has focus.
2016-08-01 15:10:52 +01:00
Dmitriy Olshevskiy 94aa36f3d5 Remove redundant -- marker in the SQL panel on the properties dialogues. 2016-08-01 14:28:14 +01:00
Dave Page 5987af1b44 Minor readme tweak. 2016-07-27 15:35:11 +01:00
Navnath Gadakh 5c3c543d2e Test suite improvements:
- Test framework support API testing with multiple server for this we need to modify test_config.json(for user it’s test_config.json.in) and test_advanced_config.json(for user it’s test_advanced_config.json.in). Server details of PG and  PPAS are included in both .in files.

- Removed the logic of logging in  the test client on each test scenario(As per Khushboo's comment in previous email).  We need this logic in test cases under ‘browser/tests/’ as for test scenarios like change password and  invalid login test cases as test client should be logged out first. So, as per this the code is slightly modified in ‘browser/tests/’.
2016-07-27 15:33:36 +01:00
Murtuza Zabuawala b6e8d195dc Security label providers are an optional parameter. Fixes #1478. 2016-07-27 15:01:16 +01:00
Dave Page f4f8273994 Display basic query info when execution completes in the query tool. Fixes #1507 2016-07-27 11:36:13 +01:00
Murtuza Zabuawala 06e881570a Fix numerous encoding issues. Fixes #1307. Fixes #1479 2016-07-26 15:05:14 +01:00
Harshal Dhumal 166d42953c Give a more useful error message if attempting to drop an object that doesn't exist. Fixes #1154 2016-07-26 14:40:02 +01:00
Murtuza Zabuawala d3d96d5c05 Disable SQLALCHEMY track modification feature as it puts overhead on system, and if not set, now emits a warning. 2016-07-26 13:01:56 +01:00
Akshay Joshi e803464ee0 Replace 'Add' buttons with '+' 2016-07-26 12:54:59 +01:00
daze 19306934a0 Property 'URL' (of type string) not quoted in browser.js template when extending pgAdmin.Browser. Fixes #1504
Without quotes, the property can be mistakenly treated as a regex:

e.g.: URL: /pgadmin/browser/,

When that happens, JS engine throws "SyntaxError: invalid regular expression flag b" and the whole web interface freezes.
This problem usually occurs when pgadmin is hosted inside a subdirectory (https://host/pgadmin/ instead of https://host/).
2016-07-26 12:47:46 +01:00
Dave Page 790b28fb61 Flask-Babel 0.11+ compatibility. Fixes #1496 2016-07-25 17:23:10 +01:00
Harshal Dhumal 875360d1c8 When we use deps functionality, backform controls re-render then. But before we re-render them we must remove old grid (if any) otherwise is causes js error "Unable to call exitEditMode of undefined". Fixes #1497 2016-07-25 14:31:17 +01:00
Harshal Dhumal 9dd3cf2399 Make Save/Save As menu options work a little more sanely. Fixes #1460 2016-07-25 12:55:06 +01:00
Neel Patel dbd3c7f4c5 Allow creation of FDWs if the extension is in a non-default schema. Fixes #1320
Root cause:-

When user change schema of already created fdw extension then while creating the new fdw we should append the <schema_name>.<fdw_handler_name>.
Previously we added only <fdw_handler_name> so while executing the query it will not be able to find fdw handler name without schema name.

e.g. If user changed the fdw handler 'postgres_fdw_handler' under schema 'test' then we should display the handler  name under fdw as "test. postgres_fdw_handler".

Solution:-

With this patch, we have added <schema_name>.<fdw_handler_name> so while creating or updating the fdw, proper sql will be generated.
2016-07-25 12:48:11 +01:00
Neel Patel dcf5bfc495 Runtime fixes:
- Compilation error with Qt4 as "QUrlQuery" class was introduced since Qt5.
- Client side download code has been removed as now we support server side download.
- We should not delete sender object inside slot. If we do so it may crash the application. To avoid this, we used Qt's "deleteLater" which will delete the objects once the processing of all the events have been done.
2016-07-25 12:39:57 +01:00
Surinder Kumar 91559c622b Fixes for function, procedure and trigger reverse SQL. Fixes #1293. Fixes #1294
1. RM#1293 - SQL pane is not displaying GRANT queries in functions node
2. RM#1294 - Comments are not visible in sql pane for trigger functions and functions

Explanation:
Previously we we using 'get_defintion.sql' template to generate SQL for SQL pane for functions, procedure & trigger functions node.
but GRANT statements and COMMENTS changes were missing. In order to fix that, now we have used both 'create.sql' and 'get_definition.sql' templates to generate full SQL query for SQL pane.
2016-07-22 16:38:21 +01:00
Dave Page 60659975ed Stop using deprecated imports. 2016-07-22 16:25:23 +01:00
Dave Page a014cf82a1 Use a numeric version check for upgrades. 2016-07-22 16:14:57 +01:00
Dave Page f783aeac63 Change button label to initcap. 2016-07-21 17:18:15 +01:00
Murtuza Zabuawala 3d7b40e111 Fix support for security labels. Fixes #1457 2016-07-21 16:35:35 +01:00
Harshal Dhumal a7d7577c7c Query tool file handling cleanup. Fixes #1460
- Opening a file should set the tab name to the filename
- Editing a file should add a * to the tab name to indicate the file is dirty
- Saving changes to a file should clear the *
- The Save button should have a drop-down menu, with a Save As option.
2016-07-21 13:44:42 +01:00
Murtuza Zabuawala 419ead9121 Ensure ajax requests are sent on second click of an object. Fixes #1462 2016-07-21 13:26:09 +01:00
Ashesh Vashi 417af3676d Using better way to find the current object in the properties panel. 2016-07-19 15:30:39 +05:30
Ashesh Vashi 8b35a60c08 Generate the proper unique name for the duplicate column name.
Thanks Murtuza for reporting the issue.
2016-07-19 11:27:03 +05:30
1753 changed files with 111778 additions and 18182 deletions

No files matched your search

+21 -17
View File
@@ -1,31 +1,35 @@
*.autosave
*.db
*.diff
*.o
*.patch
*.psp
*.pyc
*.pyo
*.o
*.psp
_build
build-*
*.swo
*.swp
.DS_Store
.idea
/dist
/mac-build
/pip-build
/src-build
/win-build
_build
build-*
pgadmin4.log
pkg/win32/installer.iss
runtime/.qmake.cache
runtime/.qmake.stash
runtime/Makefile
runtime/Makefile.Debug
runtime/Makefile.Release
runtime/moc_BrowserWindow.cpp
runtime/moc_Server.cpp
runtime/pgAdmin4.app/
runtime/pgAdmin4.pro.user*
runtime/pgAdmin4_resource.rc
runtime/release/
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
/dist
pkg/win32/win-build
pkg/win32/installer.iss
runtime/Makefile.Debug
runtime/Makefile.Release
runtime/release/
+1 -1
View File
@@ -1,6 +1,6 @@
pgAdmin 4
Copyright (c) 2013 - 2016, The pgAdmin Development Team
Copyright (c) 2013 - 2017, 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
+99 -19
View File
@@ -39,6 +39,8 @@ 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
@@ -71,14 +73,14 @@ GOTO:EOF
ECHO ARCHITECTURE - %ARCHITECTURE% cannot be run on 32 bit machine
goto:exit
)
OSVALUE=%OSTYPE%
SET 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 "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.7\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"
@@ -90,7 +92,7 @@ GOTO:EOF
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 "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.7\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"
@@ -101,7 +103,7 @@ GOTO:EOF
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 "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.7\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"
@@ -126,7 +128,10 @@ GOTO:EOF
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
FOR /F "tokens=4,5 delims=. " %%a IN ('%QMAKE% -v ^| findstr /B /C:"Using Qt version "') DO SET QT_VERSION=%%a.%%b
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%
@@ -141,6 +146,12 @@ GOTO:EOF
ECHO NMAKE = %VCNMAKE%
ECHO QTDIR = %QTDIR%
ECHO QMAKE = %QMAKE%
ECHO QT_VERSION = %QT_VERSION%
IF %QT_VERSION% GEQ 5.5 (
ECHO BROWSER = QtWebEngine
) ELSE (
ECHO BROWSER = QtWebKit
)
ECHO PYTHON_HOME = %PYTHON_HOME%
ECHO PYTHON_DLL = %PYTHON_DLL%
ECHO PGDIR = %PGDIR%
@@ -241,10 +252,10 @@ GOTO:EOF
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 Creating config_local.py
ECHO # Add any configuration changes to this file. > "%PGBUILDPATH%\web\config_local.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"
@@ -276,13 +287,7 @@ GOTO:EOF
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%
REM Copy QT dependences
copy "%QTDIR%\bin\Qt5Core.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5Sql.dll" "%PGBUILDPATH%\runtime"
@@ -299,8 +304,6 @@ GOTO:EOF
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"
@@ -311,10 +314,63 @@ GOTO:EOF
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%
REM Install the appropriate browser components. We use QtWebEngine with Qt 5.5+
IF %QT_VERSION% GEQ 5.7 (
copy "%QTDIR%\resources\icudtl.dat" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\resources\qtwebengine_resources.pak" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\resources\qtwebengine_devtools_resources.pak" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\resources\qtwebengine_resources_100p.pak" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\resources\qtwebengine_resources_200p.pak" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebEngine.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebEngineCore.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebEngineWidgets.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\QtWebEngineProcess.exe" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\opengl32sw.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
) ELSE (
IF %QT_VERSION% GEQ 5.5 (
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%\icudtl.dat" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\qtwebengine_resources.pak" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\qtwebengine_resources_100p.pak" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\qtwebengine_resources_200p.pak" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebEngine.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebEngineCore.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebEngineWidgets.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\QtWebEngineProcess.exe" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
) ELSE (
copy "%QTDIR%\bin\Qt5WebKit.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%QTDIR%\bin\Qt5WebKitWidgets.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
)
)
MKDIR "%PGBUILDPATH%\runtime\platforms"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
@@ -333,6 +389,16 @@ GOTO:EOF
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\libiconv-*.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\zlib1.dll" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\pg_dump.exe" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\pg_dumpall.exe" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\pg_restore.exe" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
copy "%PGDIR%\bin\psql.exe" "%PGBUILDPATH%\runtime"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
MKDIR "%PGBUILDPATH%\installer"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
@@ -400,6 +466,20 @@ GOTO:EOF
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
+1 -1
View File
@@ -2,7 +2,7 @@
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# Copyright (C) 2013 - 2017, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
#########################################################################
+236 -23
View File
@@ -4,38 +4,43 @@ pgAdmin 4
pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the
PostgreSQL (http://www.postgresql.org) database.
At present, it is an experimental/proof of concept project. Use at your own
risk, and don't blame us if it breaks anything!
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 browser and Python interpretor in one package which is
capable of hosting the Python application and presenting it to the user as a
desktop application.
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).
- QT 4.6 or above, up to 5.5 (older versions may work, but haven't been tested,
newer versions are not yet supported as Qt Webkit has been deprecated).
- Python 2.6 or above.
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
@@ -51,18 +56,226 @@ 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.
Configuring the Python Environment
----------------------------------
In order to run the Python code, a suitable runtime environment is required. 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_py2.txt
If you are using Python 3, use the requirements_py3.txt file instead.
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.
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 use Alt+Shift+P
to open the path 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
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\9.6
PYTHON_DLL=C:\Windows\System32\Python27.dll
PYTHON_HOME=C:\Python27
PYTHON_VERSION=27
QTDIR=C:\Qt\5.5\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
-------
pgAdmin 4 is completely experiemental and unsupported!
See https://www.pgadmin.org/support/ for support options.
Project info
------------
-47
View File
@@ -1,47 +0,0 @@
TODO Items
==========
NOTE: If you intend to work on any of these items, please let the development
team know by emailing pgadmin-hackers@postgresql.org.=
Foreign Table Module
--------------------
New functionality added in PG 9.5 for this module as below:
- ALTER [ COLUMN ] col_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
- DISABLE TRIGGER [ trigger_name | ALL | USER ]
- ENABLE TRIGGER [ trigger_name | ALL | USER ]
- ENABLE REPLICA TRIGGER trigger_name
- ENABLE ALWAYS TRIGGER trigger_name
- SET WITH OIDS
- SET WITHOUT OIDS
To add this functionality we need to add Columns, Triggers and Constraints as
separate Nodes under the Foreign Table Node.
Query Tool updateable recordset support
---------------------------------------
Add smarts to the Query Tool to allow it to recognise if a query produces a
data set that would be updateable (e.g. from a single table, all primary key
columns present), and if so, allow editing.
Backup Object
-------------
Allow to select/deselect objects under the object backup operation.
Restore Object
-------------
List down the objects within the backup file, and allow the user to
select/deselect the only objects, which user may want to restore.
Graphical Explain
-----------------
* A better zooming/scaling functionality. A minimap for the explain will be
very nice.
* Explanation on the statistic for the graphical explain plan.
* Arrow colouring based on the percentage of the cost, and time taken on each
explain node.
+4 -4
View File
@@ -1,10 +1,10 @@
.. _backup_globals_dialog:
****************************
The Backup Globals... Dialog
****************************
*************************
The Backup Globals Dialog
*************************
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
+7 -6
View File
@@ -1,10 +1,10 @@
.. _backup_server_dialog:
****************************
The Backup Server... Dialog
****************************
*************************
The Backup Server Dialog
*************************
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
@@ -24,5 +24,6 @@ Click the *Backup* button to build and execute a command based on your selection
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.
.. 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.
+3 -3
View File
@@ -19,14 +19,14 @@ Features of pgAdmin 4 include:
* 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 *pgAdmin* tree control in the left pane, and the tabbed browser in the right pane.
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:
* Open the :ref:`Create - Server dialog <server_dialog>` to add a new server definition.
* Open the :ref:`Preferences dialog <preferences>` to customize your pgAdmin client.
* 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:
+2 -1
View File
@@ -12,7 +12,8 @@ The *Check* dialog organizes the development of a check constraint through the *
Use the fields in the *General* tab to identify the check constraint:
* Use the *Name* field to add a descriptive name for the check constraint. The name 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.
* 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.
+1 -1
View File
@@ -13,7 +13,7 @@ review process for any patches submitted for inclusion in pgAdmin.
bulk updates every year). The start date should always be 2013, and the end year
the current year, e.g.
Copyright (C) 2013 - 2016, The pgAdmin Development Team
Copyright (C) 2013 - 2017, The pgAdmin Development Team
* Ensure there's a blank line immediately following any copyright headers.
+1 -1
View File
@@ -167,7 +167,7 @@ with the required file header is shown below::
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2015, The pgAdmin Development Team
# Copyright (C) 2013 - 2017, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################
+2 -2
View File
@@ -12,7 +12,7 @@ The *Collation* dialog organizes the development of a collation through the foll
Use the fields in the *General* tab to identify the collation:
* Use the *Name* field to add a name for the collation. The collation name must be unique within a schema. The name will be displayed in the *pgAdmin* tree control.
* 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.
@@ -39,7 +39,7 @@ The following is an example of the sql command generated by user selections in t
.. image:: images/collation_sql.png
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 *enterprisedb*.
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:
+14 -13
View File
@@ -22,35 +22,36 @@ Click the *Definition* tab to continue.
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 *Scale* field to specify scale of the value (the number of digits to the right of the decimal point).
* Use the *Length/Precision* field to specify the maximum number of significant digits in a numeric value, or the maximum number of characters in a text value.
* 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* field to specify a default data value.
* Check the *Not Null* checkbox to specify the column may not contain null values.
* 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*.
Click the *Security* tab to continue.
Click the *Variables* tab to continue.
.. image:: images/column_security.png
.. image:: images/column_variables.png
Use the *Security* tab to assign attributes and define security labels.
Use the *Variables* panel to specify the number of distinct values that may be present in the column; this value overrides estimates made by the ANALYZE command. Click *Add* to add an attribute:
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.
* 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>`_.
* 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>`_.
To discard an attribute, 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 *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.
Use the *Security Labels* panel to define security labels applied to the column. Click *Add* to add each security label selection:
Click the *Security* tab to continue.
.. image:: images/column_security.png
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.
Click *Add* 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.
+1 -1
View File
@@ -4,7 +4,7 @@
pgAdmin Project Contributions
*****************************
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 <mailto: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.
+7 -8
View File
@@ -4,7 +4,7 @@
The Database Dialog
*******************
Use the *Database* dialog to define 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.
@@ -35,7 +35,7 @@ Click the *Security* tab to continue.
Use the *Security* tab to assign privileges and define security labels.
Use the *Privileges* panel to assign privileges to a role. Click *Add* 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.
@@ -43,7 +43,7 @@ Use the *Privileges* panel to assign privileges to a role. Click *Add* to set pr
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 *Add* 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.
@@ -54,12 +54,11 @@ Click the *Parameters* tab to continue.
.. image:: images/database_parameters.png
Use the *Parameters* tab to set parameters for the database:
Use the *Parameters* tab to set parameters for the database. Click the *Add* icon (+) to add each parameter:
* Use the drop-down listbox next to *Parameter name* to select a parameter.
* Use the drop-down listbox next to *Role* to select a role to which the parameter setting specified will apply.
* Click *Add* to add the parameter definition to the table below.
* 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.
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.
@@ -73,7 +72,7 @@ The following is an example of the sql command generated by user selections in t
.. image:: images/database_sql.png
The example creates a database named *hr* that is owned by *enterprisedb*. It allows unlimited connections, and is available to all authenticated users.
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.
* Click the *Save* button to save work.
+18
View File
@@ -20,6 +20,21 @@ 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.
Note that 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
in one of the following files.
* ``config_distro.py``: This file is read after ``config.py`` and is intended for
packagers to change any settings that are required for their pgAdmin distribution.
This may typically include certain paths and file locations.
* ``config_local.py``: This file is read after ``config_distro.py`` and is intended
for end users to change any default or packaging specific settings that they may
wish to adjust to meet local preferences or standards.
Python
------
@@ -41,6 +56,9 @@ In order to configure the Python code, follow these steps:
.. 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
-------
+8 -8
View File
@@ -1,12 +1,12 @@
.. _domain_constraint_dialog:
****************************
The Domain Constraint Dialog
****************************
*****************************
The Domain Constraints Dialog
*****************************
Use the *Domain Constraint* dialog to create a domain constraint. A domain constraint confirms that the values provided for a domain meet a defined criteria. The *Domain Constraint* 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 Constraint* 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
@@ -21,16 +21,16 @@ Click the *Definition* tab to continue.
Use the fields in the *Definition* tab to define the domain constraint:
* Use the *Check* field to write a CHECK expression. A CHECK clause specifies a constraint that the domain must satisfy. A constraint must be an expression producing a Boolean result; include the key word VALUE to refer to the value being tested. Only those expressions that evaluate to TRUE or UNKNOWN succeed. A CHECK expressions cannot contain subqueries or refer to variables other than VALUE. When a domain has multiple CHECK constraints, they will be tested in alphabetical order by name.
* 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 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 *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**
The following is an example of the sql command generated by user selections in the *Domain Constraint* 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
+7 -11
View File
@@ -13,8 +13,8 @@ The *Domain* dialog organizes the development of a domain through the following
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.
* Select the name of the schema in which the collation will reside from the drop-down listbox in the *Schema* field.
* 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.
@@ -34,30 +34,26 @@ Click the *Constraints* tab to continue.
.. image:: images/domain_constraints.png
Use the fields in the *Constraints* tab to specify rules for the domain. Click *Add* 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.
CHECK clauses specify integrity constraints or tests which values of the domain must satisfy. Each constraint must be an expression producing a Boolean result. It should 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 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.
CHECK expressions 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 *Add* 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
Use the *Security Labels* panel to assign security labels. Click *Add* 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.
Click *Add* 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.
+3 -3
View File
@@ -31,12 +31,12 @@ Click the *Security Labels* tab to continue.
.. image:: images/event_trigger_security.png
Use the *Security* tab to define security labels applied to the trigger. Click *Add* 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.
Click *Add* 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.
@@ -48,7 +48,7 @@ The following is an example of the sql command generated by user selections in t
.. image:: images/event_trigger_sql.png
The command creates an event trigger named *accounts* which uses the trigger function *acct_due*.
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.
* Click the *Save* button to save work.
+3 -2
View File
@@ -23,7 +23,7 @@ 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:
* Select *gist* to specify a GiST index (the default).
* 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.
@@ -37,11 +37,12 @@ Click the *Columns* tab to continue.
.. image:: images/exclusion_constraint_columns.png
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 *Add* 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.
Click the *SQL* tab to continue.
+7 -7
View File
@@ -4,7 +4,7 @@
The Foreign Data Wrapper Dialog
*******************************
Use the *Foreign Data Wrapper* dialog to create 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.
@@ -24,8 +24,8 @@ Click the *Definition* tab to continue.
Use the fields in the *Definition* tab to set parameters:
* Select the name of the handler 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 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.
@@ -33,16 +33,16 @@ Click the *Options* tab to continue.
Use the fields in the *Options* tab to specify options:
* Click the *Add* 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.
* 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 *Add* 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
Use the *Security* tab to assign security privileges. Click *Add* 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.
@@ -60,7 +60,7 @@ The following is an example of the sql command generated by user selections in t
.. image:: images/foreign_data_wrapper_sql.png
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 *enterprisedb*.
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.
* Click the *Save* button to save work.
+5 -4
View File
@@ -4,7 +4,7 @@
The Foreign key Dialog
**********************
Use the *Foreign key* dialog to specify the behavior of a foreign key. 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.
@@ -12,7 +12,8 @@ The *Foreign key* dialog organizes the development of a foreign key constraint t
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 constraint. 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.
@@ -41,7 +42,7 @@ Use the fields in the *Columns* tab to specify one or more reference column(s).
* 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 *Add* to add a column to the list; repeat the steps above and click *Add* 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.
@@ -81,7 +82,7 @@ The following is an example of the sql command generated by user selections in t
.. image:: images/foreign_key_sql.png
The example shown demonstrates creating a foreign key constraint named *territory_fkey* that matches values in the *distributors* *territory* column with those of the *sales_territories* *region* column.
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.
* Click the *Save* button to save work.
+11 -17
View File
@@ -30,42 +30,36 @@ Click the *Columns* tab to continue.
.. image:: images/foreign_table_columns.png
Use the fields in the *Columns* tab to to add columns and their attributes to the table. Click *Add* 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 next to *Data Type* 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 *Length* field to specify the length of a data string.
* Use the *Precision* field to specify the total number of significant digits.
* Use the *Default* field to specify a default data value.
* Check the *Not Null* checkbox to specify the column may not contain null values.
* Use the *Statistics* field to specify *true* or *false* if the foreign data wrapper can collect statistics for the foreign table.
* Use the drop-down listbox next to *Collation* to apply a collation setting to the foreign table.
* 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 *Add* 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
Use the fields in the *Constraints* tab to apply a table constraint to the foreign table. Click *Add* 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.
Click *Add* 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 the *Delete Row* popup.
Click the *Options* tab to continue.
.. image:: images/foreign_table_options.png
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* button 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.
Click *Add* 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.
@@ -73,20 +67,20 @@ Click the *Security* tab to continue.
Use the *Security* tab to assign privileges and define security labels.
Use the *Privileges* panel to assign privileges to a role. Click *Add* 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.
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 *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 *Add* 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.
Click *Add* 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.
+2 -2
View File
@@ -35,8 +35,8 @@ Click the *Tokens* tab to continue.
Use the fields in the *Tokens* tab to add a token:
* Use the *Tokens* field to specify the name of a token.
* Click *Add* to create a token.
* Use the *Dictionary* field to specify a dictionary.
* Click the *Add* icon (+) to create a token.
* 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.
+5 -5
View File
@@ -13,7 +13,7 @@ The *FTS Dictionary* dialog organizes the development of a FTS dictionary throug
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 a role.
* 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.
@@ -33,16 +33,16 @@ 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 *Add* to add an option clause:
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 in the *Value* field.
* Provide a value for the option in the *Value* field.
Click *Add* 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 (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 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**
+10 -11
View File
@@ -54,23 +54,22 @@ Click the *Arguments* tab to continue.
.. image:: images/function_arguments.png
Use the fields in the *Arguments* tab to define an argument. Click *Add* 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 next to *Data type* to select a data type.
* Use the drop-down listbox next to *Mode* 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.
* Write a name for the argument in the *Argument Name* field.
* 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.
* Provide a name for the argument in the *Argument Name* field.
* Specify a default value for the argument in the *Default Value* field.
Click *Add* 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
Use the fields in the *Parameters* tab to specify settings that will be applied when the function is invoked:
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 next to *Parameter Name* in the *Parameters* panel to select a parameter.
* Click the *Add* button to add the variable to *Name* 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.
Click the *Security* tab to continue.
@@ -85,14 +84,14 @@ Use the *Privileges* panel to assign usage privileges for the function to a role
* 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 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 *Add* 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.
Click *Add* 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.
+1
View File
@@ -45,6 +45,7 @@ Contents:
pgadmin_tabbed_browser
pgadmin_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*:
+2 -2
View File
@@ -26,11 +26,11 @@ Click the *Next* button to continue, or the *Cancel* button to close the wizard
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 *Add* to assign a set of 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. 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 *Add* 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 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>`_.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 89 KiB

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