1. For synonyms, the property is shown as "Public Synonym".
2. For system procedure, the flag should be True but it is displaying as False.
3. For both views and materialized views, the property is "System View".
4. For FTS templates, the property is showing as "System FTS Parser".
Fixes#1257
determine the number columns chagned. It was trying to execute
'replace' and 'includes' function on undefined values instead of
string value.
Also - changed the warning message, and separated the 'Do you want to
continue?' syntax in separate line for better user experience.
Fixes#5053
Add Reverse Engineered and Modified SQL tests for pgAgent jobs. Fixes#4623
Fixed modified SQL issue while adding an exception in pgAgent job schedule. Fixes#5356
1) Removing the package header removes the body as well.
2) Schema is not visible on the properties dialog.
3) Reverse engineering SQL and Create script not showing schema-qualified packages.
Fixes#5410
Fixed an issue where schema diff showing changes in the identical domain constraints. Fixes#5315
Ignore the keys from the source and target list and also sort both the lists.
1) Change comments on the procedure with arguments as a procedure can be overloaded.
Note that on EPAS servers, procedure overloading works only for v11+.
2) The save button of a procedure dialog is enabled without any change.
3) Fixed formatting of the reverse-engineered SQL.
4) On EPAS servers, the parameters set were not displayed in the SQL generated.
They are visible only if set to edbsql.
5) Changing the volatility option of any existing procedure was not working.
6) Changing the parallel option (EPAS v9.6+) was not working.
7) Added RE-SQL test cases for procedures.
Fixes#4620, Fixes#4873
- fixed gettext usage with .format() only for original text with %s
- fixed typos
- fixed translation yes/no buttons in the dialog.
- improved translating sentences without "connecting" words (eg. see web/pgadmin/dashboard/static/js/dashboard.js,
word 'cancel' needs to be translated in the Czech language as 'zrušit' but in another sentence as 'zrušení')
- added gettext for text translations.
- Using the 'gettext' as oppose to '_', which is not defined
- Define missing variables
- Fixed escape character in string with double quote
- Removed some dead code in a test case
- Removed unnecessary self assignment
Includes some fixes for Accessibility improvements
- Use semantic markup to mark emphasized or special text
- Added hidden legend in <fieldset> for better screen reader support
PostgreSQL doesn't allow to change the view columns. So the view should be dropped first
and then recreate it and also the user will get a warning first.
Fixed an issue where the autovacuum_enabled parameter is added automatically in the RE-SQL
when the table has been created using the WITH clause. Fixes#5180
1) Fixed usage gettext('') instead of _('') in javascript files.
2) Fixed usage gettext('') instead of `${gettext('')}` in javascript files,
because "pybabel extract" not support extracting from this syntax.
1) Aria-label additions at few missing places.
2) Label additions with 'sr-only' class where hidden labels required.
3) Converted label to span to solve accessibility error.
Fixes#4608
Improve the style of the highlighted code after query execution for Dark mode. Fixes#4996.
Changed background pattern for geometry viewer to use #fff for all themes. Fixes#5077
Changed the color of selected and hovered item for Select2 dropdown, also tweak the appearance of the tags in multi-select boxes. Fixes#4955
Fixed Firefox monospaced issue by updating the font to the latest version. Fixes#5184
1) Upgraded passlib==1.7.1 to passlib==1.7.2
2) Replace unmaintained Flask-Security with maintained Flask-Security-Too package, which is also compatible with python 3.8
3) Other compatibility code changes.
1. Comparison result of 2 exact identical Trigger Functions is different
2. EPAS 12: Table comparison with the compound trigger shown as different, but all SQL panels are blank
3. Compound trigger properties panel is not opening
4. The DDL difference of the table containing the foreign key is not accurate
5. The DDL difference of the view which refers the table from schema is not accurate
6. DDL comparison fails if we have procedure with plpgsql in source and edbsql in target
1) Version mismatch should be displayed if you select EPAS 11 as the source and EPAS 12 as the target.
2) We should handle schema diff if the user stops the server after compare.
3) The data type is not visible for column headers in the query tool/view data.
4) Difference SQL is shown, though source & target SQL are same.
5) Error is shown when the 'target only' table is selected & clicked on Generate Script.
6) Difference SQL generated on deleting primary constraints from source throwing error on running from query tool.
7) Copy button for Difference SQL does not work.
8) Incorrect SQL is generated when check constraint from the source table is dropped.
9) Difference SQL is NOT shown when 'Unique Constraint' is dropped from the source table.
10) In case of difference, no message displayed related to copied successfully or not.
11) create or replace trigger should be on the next line.
12) Comparison Result of exactly identical tables having foreign key constraints is shown as different.
13) The wrong SQL displayed in the difference tab for view and materialized view for the select statements.
14) Wrong SQL displayed for the procedure in the difference section.
15) If the user already opens the compare section of Schema diff tool and Disconnects the server then '<' not supported between instances of 'NoneType' and 'int' message displayed.
16) When 'check constraint' is added on the source table which has already unique constraint & identical target table is created, all SQL panels remain empty.
17) Difference SQL is NOT shown when after adding 'Foreign Key' constraint to existing source table.
18) Incorrect SQL is generated when the existing index on the source table is modified.
19) Wrong SQL displayed for function in difference section.
20) Additional space is added before & after in difference SQL generated on the addition of an index to the source table.
21) Difference SQL is NOT shown when tables have different permission/grants.
22) Incorrect SQL is shown when the source had inherited table & target has a normal table.
23) Exactly identical child(inherited) tables show difference SQL.
24) Comparison is NOT working when the custom vacuum is enabled & one of the parameter modified & again custom vacuum is disabled.
Allow screen-reader to identify the alert errors. Fixes#4763
Added role alertdialog for confirm and alert dialog.
Added role status for all status bars/banners.
Added role alert for error bars.
Added aria-labelledby for charts on each dashboard.
Added tabindex for each chart so that it is navigable using tab key.
Currently supported objects are Table, View, Materialized View, Function and Procedure.
Backend comparison of two schemas implemented by: Akshay Joshi
Fixes#3452.
2) Ensure that the error message should not be displayed if Tablespace is not selected while creating the index. Fixes#5008.
3) Fix an issue where operator, access method and operator class is not visible for exclusion constraints. Fixes#5009.
Edit types query is executed for every column when open properties dialog of the table.
Change the logic to fetch the edit types for all the distinct column types used in the table at once.
2) Fix an issue where length and precision are not removed from table/column dialog. Fixes#4964.
3) Fix an issue where the Interval data type is not displayed in the properties dialog of table/column. Fixes#4965.
4) Fix an issue where the wrong type is displayed when changing the datatype from timestamp with time zone to timestamp without time zone. Fixes#4761.
5) Change the label from 'Length and Precision' to 'Length/Precision and Scale' for columns.
6) The maximum length for datatype like interval, timestamp with time zone, time with time zone, etc.. is 6. Set the max length to 6 instead of 10.
2) Fix server connection drops out issue in query tool. Fixes#4818
3) Fix VPN network disconnect issue where pgAdmin4 hangs on expanding the Servers node. Fixes#4926.
4) Ensure that the Servers collection node should expand independently of server connections. Fixes#4933.
Set the default connection timeout to 10 seconds instead of 0.
1) Remove duplicate logic.
2) Child node specific logic should be inside the child node and table node gets the required information from the respective child node.
Note:- Refactoring of columns node still in progress.
Fixes#4807
2) Added Dark(Beta) UI Theme option. Fixes#3741.
3) Fix an issue where a black arrow-kind image is displaying at the background of browser tree images. Fixes#4171
Changes include:
1) New theme option in preferences - Miscellaneous -> Themes. You can select the theme from the dropdown.
It also has a preview of the theme just below the dropdown. Note that, a page refresh is needed to apply changes.
On saving, a dialog appears to ask for refresh.
2) You can create your own theme and submit to hackers. README is updated to help you create a theme. Theme will be available only after the bundle.
3) Correction of SASS variables at few places and few other CSS corrections.
4) Added iconfont-webpack-plugin, which will convert all the SVG files(monochrome) used as icons for buttons to font icons.
This will allow us to change the color of the icon by using CSS color property.
5) All the .css files will bundle into a separate file now- pgadmin.style.css. This will help reduce the size of
theme CSS files as CSS in .css files will not change with the change of SASS variables.
Changes include:
1) Remove underscore-string and sprintf-js packages as we were using only %s. Instead, added a function to do the same. Also changed gettext to behave like sprintf directly.
2) backgrid.sizeable.columns was not used anywhere, removed. @babel/polyfill is deprecated, replaced it with core-js.
3) Moved few css to make sure they get minified and bundled.
4) Added Flask-Compress to send static files as compressed gzip. This will reduce network traffic and improve initial load time for pgAdmin.
5) Split few JS files to make code reusable.
6) Lazy load few modules like leaflet, wkx is required only if geometry viewer is opened. snapsvg loaded only when explain plan is executed. This will improve sqleditor initial opening time.
Reviewed By: Khushboo Vashi
Fixes#4701
Select2 parameter 'first_empty' should be set to false for the controls of type array.
If it is true then on deselecting/clearing all the values, an empty entry is still there.
Fixes#4751
2) Fix modified SQL for Index when reset the value of Fill factor and Clustered?. Fixes#4702
3) Fix reversed engineered SQL for btree Index when provided sort order and NULLs. Fixes#4703
Ensure columns can be created when they are IDENTITY fields with the CYCLE option enabled. Fixes#4496
Ensure purely numeric comments can be saved on new columns. Fixed#4497
"malformed array literal error when updating pgagent job". Fixes#4428
"Error when updating connection string in pgagent Jobs.". Fixes#4448
When user create a schedule using Create->Schedule dialog browser tree is not showing newly created node.
Properties tab showing same properties for all the created schedule.
Added validation in "pga_jobstep.js", throws error on browser when we modify step from the pgagent dialog and select the same node.
Along with this, I have also fixed few other issues/icons found on the way:
1) Dependencies tab for inherited tables/foreign keys shows partial text (Fixes ##3994).
2) Dependencies tab for child partition table shows parent partition table as Function.
3) Dependencies tab for triggers shows trigger functions as plain functions.
4) Dependents tab for partitioned table shows the child partition tables as normal table instead for partitioned tables.
The Bootstrap Switch Control was extended only for alignment in most
places. IIntroduce a configurable option to set the necessary class
on the main div and also remove the extra extended controls.
- Process watcher made fixed width with header changes, time details rounded to 2 decimals
- Query history will show "No query history" if no query fired. Query editor default size increased.
- Fixed a bug where New folder create button not working when in List mode and No files/folder present.
- Other minor improvements.
- Base font size changed from 0.815rem to 0.875rem, for navbar from 0.875rem to 0.925rem.
- Dialog sizes made consistent throughout the application. Now there are 3 size options for width and height each - sm, md, lg. Combination of any of these to be used hereafter
- Alignment fix for controls of Node properties dialogs which includes showing text and label in one line without dialog size change, checkbox alignment, switch control alignment at places and other minor improvements in other dialogs
- Error message design change in dialogs validation
- SQL Editor data grid editor popup design changes which were missed
- Design change for dashboard server activity grid
- Login page language dropdown color fix
- Properties accordion collapse design fix
- Help, Info icon fixed across all dialogs which were not working if clicked exactly on the text
- Added missing icon with buttons at few places
- Shadow behind the dialogs is increased to make it look clearly separated and depth.
- Control Alignment fix in maintenance dialog
- Min height of alertify dialogs set for better UX
- File dialog design fix when no files found
- Grant wizard fixes - Scroll bar visibility on first page, use full space for SQL generated on the last page
- Browser toolbar buttons changed to sync with SQL editor toolbar buttons
- Rounded corners for docker floating dialog (no properties)
- Renaming file in file dialog should show original file name
- SQL data grid text edit popup buttons behaviour was swapped. This is fixed.
- Import/Export dialog changes as per new design.
Changed the SCSS/CSS for the below third party libraries to adopt the
new look 'n' feel:
- wcDocker
- Alertify dialogs, and notifications
- AciTree
- Bootstrap Navbar
- Bootstrap Tabs
- Bootstrap Drop-Down menu
- Backgrid
- Select2
Adopated the new the look 'n' feel for the dialogs, wizard, properties,
tab panels, tabs, fieldset, subnode control, spinner control, HTML
table, and other form controls.
- Font is changed to Roboto
- Using SCSS variables to define the look 'n' feel
- Designer background images for the Login, and Forget password pages in
'web' mode
- Improved the look 'n' feel for the key selection in the preferences
dialog
- Table classes consistency changes across the application
- File Open and Save dialog list view changes
Author(s): Aditya Toshniwal & Khushboo Vashi
date/time and exception. Fixes#3638
- Fixed syntax error.
- Update/Delete exceptions are not working, SQL is wrong.
- Wrong exception time is shown, it should shown in UTC as datatype of
the column is timestamp with out timezone.
- Added test cases for Schedule and Steps of pgAgent Job.
1. EPAS packages' function/procedure does not honour INOUT arguments, it converts INOUT to OUT.
2. Packages' functions and procedures are not getting listed in their respected nodes in some scenarios like procedure having INOUT argument and function with void return type
3. The Reverse engineering SQL is not correct for Packages' functions/procedures
4. In case of INOUT argument, debugger asks for mendatory input which should not.
5. Re-executing a procedure whilst direct debugging doesn't work.
- Fix the RM #3446 "plpgsql keyword should displayed in SQL pane for EPAS-11".
- Procedures for EPAS 11 always created as 'edbspl', even though language is sql or plpgsql.
- Not able to create Function/Procedure/Trigger function if the language is "C" for all supported database server.
- Function creation for EPAS 9.6 and above when set "Window?" flag to "Yes".
- Disable Volatility, Strict, Parallel, Estimated cost and Leak prof while creating procedures in EPAS 11 when language is not 'edbspl'.
- Rename "default" folder to "11_plus" inside "pg" directory for procedures, as procedures are supported from PG11 onwards.
- Creating/Deleting parameter in Procedure for PG 11.
- Drop procedures with arguments for PG/EPAS 11.
pg_proc table has added default value 'v' for Volatility, 100 for Cost and 'u' for Parallel for any language. All the three are not supported for Procedures in PG/EPAS 11 (excluding 'edbspl' language for EPAS). Fixed the issue where it is visible in properties panel if we create procedure using language 'plpgsql' or 'sql'.
Extract some of the ACI Tree functionalities, and decouple it from the
main source. Also - create some abstractions from the repeated code
around the enable/disable the schema children object create/edit/delete
functionalities, and also created the dialog wrappers for backup and
restore dialogs.
Reviewed by: Khushboo and Ashesh
Refactored by: Ashesh
- Extract SQLEditor.execute and SQLEditor._poll into their own files and add test around them
- Extract SQLEditor backend functions that start executing query to their own files and add tests around it
- Move the Explain SQL from the front-end and now pass the Explain plan parameters as a JSON object in the start query call.
- Extract the compile_template_name into a function that can be used by the different places that try to select the version of the template and the server type
This patch also updates the editor to retrieve all row values on save, thus immediately showing default values and allowing subsequent editing without a refresh.
1) User was allowed to enter start date ahead of end date while scheduling a job. Fixes#2921
2) Datetime picker was not displaying in the grid (sub-node collection control). Fixes#1749
3) Fixed UI issue where validation error was not displaying properly for Datetime control.
1481 of 1831 messages (80%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1694 of 1831 messages (92%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1748 of 1831 messages (95%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1750 of 1831 messages (95%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1436 of 1831 messages (78%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
1481 of 1777 messages (83%) translated in pgadmin/translations/de/LC_MESSAGES/messages.po
1694 of 1777 messages (95%) translated in pgadmin/translations/ja/LC_MESSAGES/messages.po
1472 of 1777 messages (82%) translated in pgadmin/translations/pl/LC_MESSAGES/messages.po
1750 of 1777 messages (98%) translated in pgadmin/translations/ru/LC_MESSAGES/messages.po
1436 of 1777 messages (80%) translated in pgadmin/translations/zh/LC_MESSAGES/messages.po
webpacked, etc.
- Fixed the background-size for the svg icons to 20x20 px such that it
does not adjust it's size when a context menu height is different due
to length of the node label, also - it allows us to fix the issue of
icons sizes in the Grant Wizard.
- Added two missing browser tree nodes in the webpack configuration
i.e. Foreign Server, and User Mapping
- Removed a redundant javascript file foreign-server.js
- Fixed the missing context menu icons for Foreign Table, and Tablespace
nodes.
Thanks EDB development team to find the regression added after the icon
changes in quick time.
it compatible with the pgAdmin 4 color combination.
TODO::
Icons for the following nodes are in PNG format.
- Domain Constraint (Only the invalid icon)
- pgAgent Job Steps
- Green Plum database server
- Server (Only server.png, which is used in the create/edit dialog)
When connected to a Greenplum database server
- Hide items that not work with GPDB, such as Triggers, FDW, FTS_*, etc
- Tables/Views/Catalogs/Language node can expand correctly
- Views/Languages/Catalogs can show properties dialog with correct information
- Show a greenplum icon at the server node
Teng Zhang & Hao Wang
database server, shown in the preferences dialog.
Also, fixed the issue, when server type is not defined in the
DEFAULT_BINARY_PATHS, in the configuration.
- Loading 'pgadmin' as 'sources/pgadmin', as found under the 'sources'
reference directory to be consistent with other files.
- Removed the 'pgadmin' reference from the base.html template.
- Renamed 'pgadmin.slickgrid.editors.js', and
'pgadmin.slickgrid.formatters.js' as 'editors.js', and 'formatters.js'
respectively, as they're already in the 'pgadmin/static/js/slickgrid'
directory.
- Removed the duplicate entry of 'translations' from the webpack.shim.js
2) Fixed missing logic of partition from primary_key.js and unique_constraint.js as this two files are newly created for webpack.
3) Changed the node name from 'check_constraint' to 'check_constraints'. Also changed the same in test case url.
This significantly speeds up loading of the application; in an average of 3 tests, v1.6
loaded in 11.5s in the runtime on a Mac, whilst the webpacked version of the code
loaded in 5.53s.
This allows the user to create partitioned table and it's partitions.
- Edit partitions, Create/Listing of constraints, rules, triggers under partitions. (Implemented by Harshal)
- Updating browser tree node when create/attach/detach partitions from table dialog.(Implemented by Ashesh)
'static' directory from 'templates' in the respective module directory:
- Server Group
- Server
- Database
- Schema
- Cast
- Event trigger
- Extension
- Foreign data wrapper
- Language
- Catalog Object
- Collation
- Domain Constraint
- Domain
- Foreign server
- FTS Configuration
- FTS Dictionary
- FTS Parser
- FTS Template
- Function
- Procedure
- Trigger Function
- Package
- Sequence
- Catalog
- Schema
- Synonym
- Table
- Type
- Materialized View
- View
- pgAgent Modules
+ Job (pga_job)
+ Schedule (pga_schedule)
+ Steps (pga_jobstep)
Added new dynanic modules for listing the supported server types, and
current user information.
NOTE: We've not yet moved the javascripts for the children of the table
module.
Note that this doesn't add full support for PostGIS types to the table/column dialogues, which still can't handle the typmod usage. It does bring support to parity with pgAdmin 3 though.
Created a url_for function module to be used by different javascript
modules to use the same functionality of flask at client side.
A python module can expose the list of endpoints, used by its
javascripts, by overriding the 'get_exposed_url_endpoints(self)'
function.
In this patch, we have modified all the browser modules to use this
function. It will allow us to move the majority of the javascript
modules of browser nodes from templates directory to the static
directory.
TODO::
- Move these javascripts modules to the static directory.
- Use this function in all the applicable javascript modules.
e.g. tools, miscellaneous modules
1) Error on clicking SQL panel when Schedule OR Step node is selected in browser. Fixes#1888
2) Error while dropping Schedule OR Step node. Fixes#1889
3) Newly created Schedule/Step node was not displaying in browser. Fixes#1890
2) Add Unit Tests for each file.
3) Add ORDER BY into Copy Selection Feature test to ensure the results are retrieved always in the same order
4) Renamed the Scenario of the xss_checks_pgadmin_debugger_test and skip it for versions less than 9.1
5) Deleted unused __init__.py files.
Using 'psycopg2.extensions.UNICODE' (for Python < 3) in the psycopg2
driver for proper conversation of unicode characters. Also - adjusted
the string typecaster to take care of different character types (char,
character, text, name, character varying, and their array types).
Reviewed by: Dave Page, Murtuza Zabuawala & Akshay Joshi
- 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.
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.
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.
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.
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.
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.
- 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.
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.
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.
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.
- 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
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
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
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
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.
- 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/’.
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.
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.
1. Altered variable control to make its UI consistent with privileges and Security labels.
2. Changed datamodel.js to handle duplicate rows at datamodel level and not UI/Control level. (See variable control for example)
1. Select2 control fixed for multi-select mode.
2. Index constrains (primary and unique key) fixed column listing issue.
3. Table node "inherited from" (Select2 control) was not showing table name with public schema
1. Foreign keys listed twice
The label for Exclusion constraint was set to 'Foreign keys'. fixed it.
2. Trigger function, Unique constraint, Primary key should be in title case
3. if user click outside of Preferences window it disappear (it should not disappear)
set preference alertify dialog option closableByDimmer to false.
4. Columns node settings listed twice
Override the register_preferences method in Columns CatalogObjectColumnsModule class
because there are two types of columns node, catalogs columns and tables columns.
so the settings for table columns should also work for catalog columns. Thats why we are not showing preference option for catalogs column node.
Ashesh fixed this issue.
When not using qtLiteral, it was result into an error - "unknown
error displayed when modify comments which may special characters on
Materialized view".
* Do not need to translate an empty string. (that results into the
translation header inclusion in the javacript module).
* String.prototype.StartsWith is not an well received function, it has
not been available in the QWebkit for linux.
The following node module script will be loaded, when first database
node object is added in the browser tree.
* Domains
* Foreign tables
* FTS Configuration
* FTS Dictionary, and
* Functions
Icons for these modules needs to be shown in the dependents list.
procedure node.
This patch also includes other fixes related 'procedure' node as below:
* Generate correct statement for dropping procedure.
* Fetch the missing schema name for the EXEC script.
* Removed the 'DROP CASCADE' menu options, as it is not supported by
procedure.
* Hide the security tab for the objects under the catalog schema.
Patched by Surinder Kumar, vastly improved by me.
* Make the securtiy label across all the nodes, using the same backbone
model across the nodes, and make changes in the backend code for the
same.
* Added 'catalog' as parent type for the domain, procedure nodes.
* Proper initialization of the FTS Configuration, FTS Parser, FTS
Dictionary, FTS Template Nodes.
* Proper Indentation in collection.js
* Moved the Columns, and Constraint to its repective tabs.
* Ensure all the labels only have a capital letter on the first word
(except for keywords or acronyms).
* Resolve the typo in string - 'System table'.
* Error messages on fields should not be shown unless the field loses
focus and has an error.
* "General" section should have a limited subset of information.
* Variables grids should not be on the Security tab.
* Fixes the field labels that imply a question.
* Privileges controls on the Properties lists should be in a "Security"
group.
Apart from review comments improved few other areas too:
* Used in-place DepsCell functionality for columns in both index, and
type node.
* Improved the error handling in constraint nodes.
* Added create, alert SQL Help for nodes associated with the table node.
- Table, Column, Index and Trigger (Author:- Murtuza Zabuawala)
- Constraints Primary Key/Unique/Check/Foreign Key/Exclusion
with integration into Table node (Author:- Harshal Dhumal)
- Rule (Author:- Surinder Kumar)
- Vacuum Control (Initial patch by Surinder Kumar and further enhancement by Murtuza)
tree nodes.
Each individual node is responsible for introducing the 'canDrop'
function/flag to decide whether the 'Delete/Drop' context menu should be
enabled/disabled.
In commit-id: 26aa5607ad, 'obj.canDrop'
was set to true in the 'pgBrowser.Node' in delete callback, just to make
the server-group droppable, which is wrong, as all the nodes are
getting affected because of this change in a wrong way.
To fix the issue, added the 'canDrop' function in the server-group node.
Apart from them, also added restriction for not allowing to delete the
default server-group.
Also, handled the same restriction at the server end.
Tweaked by Ashesh Vashi to integrate the backgroud process, and also
with some improvements as stated below:
* Resolved an issue loading existing preference.
* Improved the background process observer/executor for supporting
detalied view.
* Added the utility path preferences in the ServerType class.
'postgis_tiger_geocoder'.
Current implementation changes the schema name, whenever we chance the
name, which is wrong. We should have not change the schema for this
event.
Thanks Fahar Abbas for reporting.
operation like backup, restore, etc within it.
Also:
* improvised the color combination of the background process logger.
* Removed an unnecessary print statement from the
get_storage_directory(..) function, also return None if STORAGE_DIR
is set to None.
will always have latest data related to that type of node. Also, fixed
the cache_level for different node types.
This commit also contains fixes for the following issue:
* In extension module - use the 'node-list-by-name' instead of using a
custom 'node-ajax-options' control, and removed redundant template
schemas from it.
* When we tries to destroy the select2 object from
Select2Cell/Select2Control while releasing the properties view,
sometimes select2 can not find the instance related it for some
unknown reason. Hence - before removing it we will check for manual
instance existance using $.data('select2').
* When we traverse through the browser tree nodes very quickly, it tries
to remove the object before it gets created completely, and results
into an exception.
* Icon in the select2 drop down list was not visible due to some CSS
issues.
Apart of that, we will generate two new browser events -
'pgadmin-node:created:<NODE-TYPE>', 'pgadmin-node:updated:<NODE-TYPE>'
whenever a new node is created, or an existing node will be updated.
the CAST module. Make the changes in the CAST module too for the
changes done in the NodeAjaxOptionsControl in the commit-id:
944bdbb96c.
We've changed the signature (arguments) of the 'options' & 'transform'
functions.
- Renaming or changing the schema for a shell type should not be allowed.
- I'm allowed to try to add ACL entries or security labels to an
existing shell type. This should be disallowed.
- Changing the schema on a (non-shell) type doesn't work - the type
name is omitted, e.g.
ALTER TYPE pem
SET SCHEMA pemhistory;
Which should be:
ALTER TYPE pem.foo
SET SCHEMA pemhistory;
The current implementaton binds the cell/control object, and the ajax
data in the asychronous Cells/Controls with the 'options' functions
extended from the Select2Cell.
The problem starts when we try to fetch the current model from that
options/transform/filter function to do some operation, which does not
require in most of the cases. Except the privileges control - where we
needed the current model for omitting the existing selected object
during transformation, and filtering.
In order resolved the issue, we need a common object, which is shared
among the Cell. In backgrid, the 'Column' object is mong the cell,
hence - implementation logic has been changed to bid the 'Column' object
with the 'options' function and, passed the 'Cell' object as an
arguments.
Because - we do use the common function 'transform' between 'Control'
and 'Cell', we needed make changes in the Select2Control to pass the
Control object as an arguments.
And, make the changes in the privileges control to use the new
implementation. The same logic is also required in some of the
operations, we will be/are working on the table/column nodes.
generated for the privilege control. Also, made changes in the
PrivilegeRoleModel, to allow to select a grantee only once for the
current user (as grantor), and omit them from other cell objects.
Valid/Invalid event was not properly triggered, whenever the child
attribute is a collection/model within a model (nested mode/collection
within model). This patch tried to take care of all such scenarios in
general.
- Remove unnecessary columns from collection property lists.
- Standardise property names and groupings.
- pg_attribute doesn't have an OID column, so use attnum instead (of atttypid!?!)
- Don't display the OID on Edit dialogues
- Use the ACL summary display in the properties panel, not the subnode editor.
- s/Oid/OID/g
- Ensure all security properties are displayed in the Security group
- Ensure all object definition values are stored in the Definition (or a more precise) group, not General.
- Fix the ordering of General properties so the comment is always show last.
- Display the ACL string in properties, not the subnode panel.
- Offer default values for the owner of new objects.
- Add missing context menu option to create a tablespace from a server node.
This will also allow us to operate on individual privileges & also we
needed this functionality for column nodes.
For example,
*Earlier:* priv was string
GRANT {{ priv }} ON {{ type }} TO {{ conn|qtIdent(role) }};
*Now:* priv will be List, which we need to handle in jinja templates.
GRANT *{{ priv|join(', ') }}* ON {{ type }} TO {{ conn|qtIdent(role) }};
which allows to determine certain group to hide/show the whole
tab/fieldset control in the properties, and create dialog.
Using this functionality in the database for the
'default privileges - types', which is not allowed before PG < 9.2 using
the version check.
group, we do have the same function in CollectionModule class, which
will work, when we set the min_ver, max_ver and server_type properly.
Thanks Khushboo for pointing that out, and Akshay for quick testing for
this patch.
This commit takes care of the following issues/improvements.
* Adding missing imports for unauthorised in database module
* Node under Servers Nodes (i.e. Databases, tablespaces, roles nodes)
need to be inherited from PGChildNodeView (and, not from NodeView) for
adding server version check for their children.
* Adding statistics for database, and tablespaces in its node (not, yet
in UI)
* Renaming the camel case methods with proper name.
(i.e. getSQL -> get_sql, getNewSQL -> get_new_sql, etc.)
* Fixed the functions going beyond the text limit (column: 80) in
Databases, Roles & Tablespaces modules.
* Fixed the node method of Database module, which was not tested ever.
* We do not need separate SQL template for fetching the name (i.e.
get_name.sql), using the 'nodes.sql' for the same.
* Optimise the query for fetching ACLs for the database node, we didn't
require to join certain tables, while fetching only the ACLs.
* Introduced the list of the ACLs (regular and default ACLs for
different type) supported by each version [Databases Module].
* Renamed the templates 'get_nodes.sql' to' nodes.sql' to make it
consistent with other modules.
* Removed the checks for the authentication table use, as we don't need
to expose the password to the users (even the encrypted MD5). Using
the pg_roles view always for fetching roles/users information now.
* Resolved some typos in unreachable (specially the exceptions
catchment area.)
* Logging the exception in the application.
* Using qtLiteral, qtIdent properly in the templates (do not assume
about the types of data.)
* Using tsid as identifier instead of did for the tablespaces.
* Using nodes method of tablespace view for fetching individual node
information.
* Removing the hardcoded node information from the 'parse_priv_to_db'
function, and pass on allowed ACLs by the caller nodes.
* Using 'nodes.sql' to fetch name of the template instead of writing
that in the delete.sql template, which is definitely wrong place to
fetch the name of the object. [Tablespace Module]